diff --git a/.eslintrc b/.eslintrc index 4e64b7a09..f5051516b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,31 +1,32 @@ { + "root": true, "env": { - "node": true, - "browser": true - }, - "globals": { - "Promise": true + "es6": true, + "browser": true, + "node": true }, "parserOptions": { - "ecmaVersion": 6, + "ecmaVersion": 2017, "sourceType": "module", - "ecmaFeatures": { - "jsx": false - } + "ecmaFeatures": {} }, + "extends": [], "rules": { + "semi": ["warn", "never"], + "indent": ["error", 2], + "spaced-comment": 0, "no-cond-assign": 2, "no-var": 1, "prefer-const": 0, "no-extra-parens": 0, "no-dupe-keys": 2, + "no-undef": 2, "no-unreachable": 2, "eqeqeq": 1, "keyword-spacing": 0, "no-native-reassign": 2, "no-redeclare": 2, "radix": 1, - "indent": 0, "quotes": [0, "single", "avoid-escape"], "no-shadow": 2, "no-unused-vars": 1, @@ -38,7 +39,17 @@ "no-octal-escape": 2, "no-constant-condition": 1, "no-unused-expressions": 2, - "no-undefined": 0, - "no-undef": 2 + "comma-dangle": [1, "only-multiline"], + "space-before-function-paren": 0, + "max-len": [ + "error", + { + "code": 120, + "ignoreComments": true, + "ignoreStrings": true, + "ignoreTemplateLiterals": true, + "ignoreRegExpLiterals": true + } + ] } } diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 000000000..907b973dd --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,29 @@ +# sends test-coverage data to codecov.io +# https://codecov.io/gh/spencermountain/compromise +name: Coverage + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + getCoverage: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2.1.2 + with: + node-version: '12' + + - uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - run: npm ci + - run: npm run codecov diff --git a/builds/compromise-tokenize.js b/builds/compromise-tokenize.js index 1100476bd..d510a01cf 100644 --- a/builds/compromise-tokenize.js +++ b/builds/compromise-tokenize.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).nlp=e()}(this,(function(){"use strict";function t(e){return(t="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})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rn[e].lineage.length?1:n[t].isA.length>n[e].isA.length?-1:0:0:1}))},R={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},U={json:function(t,e){t=t||{};var r={};return(t=Object.assign({},R,t)).text&&(r.text=this.text),t.normal&&(r.normal=this.normal),t.tags&&(r.tags=Object.keys(this.tags)),t.clean&&(r.clean=this.clean),(t.id||t.offset)&&(r.id=this.id),t.implicit&&null!==this.implicit&&(r.implicit=this.implicit),t.whitespace&&(r.pre=this.pre,r.post=this.post),t.bestTag&&(r.bestTag=_(this,e)[0]),r}},H=Object.assign({},$,V,M,z,U);function G(){return"undefined"!=typeof window&&window.document}var Q=function(t,e){for(t=t.toString();t.length0&&void 0!==arguments[0]?arguments[0]:"";e(this,t),r=String(r);var n=T(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=f(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(t,[{key:"set",value:function(t){var e=T(t);return this.text=e.text,this.clean=e.clean,this}}]),t}();ot.prototype.clone=function(){var t=new ot(this.text);return t.pre=this.pre,t.post=this.post,t.clean=this.clean,t.reduced=this.reduced,t.root=this.root,t.implicit=this.implicit,t.tags=Object.assign({},this.tags),t},Object.assign(ot.prototype,H),Object.assign(ot.prototype,it);var st=ot,at={terms:function(t){if(0===this.length)return[];if(this.cache.terms)return void 0!==t?this.cache.terms[t]:this.cache.terms;for(var e=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof t&&(t="normal"===t?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===t?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),i=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(i=!0);var o=n.reduce((function(o,s,a){t.last=r&&a===n.length-1;var u=!0,c=!0;return!1===i&&(0===a&&e&&(u=!1),a===n.length-1&&r&&(c=!1)),o+s.textOut(t,u,c)}),"");return!0===i&&r&&(o=ut(o)),!0===t.trim&&(o=o.trim()),o}},ht={trim:function(){var t=this.terms();if(t.length>0){t[0].pre=t[0].pre.replace(/^\s+/,"");var e=t[t.length-1];e.post=e.post.replace(/\s+$/,"")}return this}},lt=/[.?!]\s*$/,ft=function(t,e){e[0].pre=t[0].pre;var r,n,i=t[t.length-1],o=e[e.length-1];o.post=(r=i.post,n=o.post,lt.test(n)?n+r.match(/\s*$/):r),i.post="",""===i.post&&(i.post+=" ")},pt=function(t,e,r){var n=t.terms(),i=e.terms();ft(n,i),function(t,e,r){var n=t[t.length-1],i=e[e.length-1],o=n.next;n.next=e[0].id,i.next=o,o&&(r.get(o).prev=i.id);var s=t[0].id;s&&(e[0].prev=s)}(n,i,t.pool);var o,s=[t],a=t.start,u=[r];return(u=u.concat(r.parents())).forEach((function(t){var e=t.list.filter((function(t){return t.hasId(a)}));s=s.concat(e)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length})),t.cache={},t},dt=/ /,vt=function(t,e,r){var n=t.start,i=e.terms();!function(t){var e=t[t.length-1];!1===dt.test(e.post)&&(e.post+=" ")}(i),function(t,e,r){var n=r[r.length-1];n.next=t.start;var i=t.pool,o=i.get(t.start);o.prev&&(i.get(o.prev).next=e.start),r[0].prev=t.terms(0).prev,t.terms(0).prev=n.id}(t,e,i);var o,s=[t],a=[r];return(a=a.concat(r.parents())).forEach((function(t){var r=t.list.filter((function(t){return t.hasId(n)||t.hasId(e.start)}));s=s.concat(r)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length,t.start===n&&(t.start=e.start),t.cache={}})),t},mt=function(t,e){var r=e.pool(),n=t.terms(),i=r.get(n[0].prev)||{},o=r.get(n[n.length-1].next)||{};n[0].implicit&&i.implicit&&(i.set(i.implicit),i.post+=" "),function(t,e,r,n){var i=t.parents();i.push(t),i.forEach((function(t){var i=t.list.find((function(t){return t.hasId(e)}));i&&(i.length-=r,i.start===e&&(i.start=n.id),i.cache={})})),t.list=t.list.filter((function(t){return!(!t.start||!t.length)}))}(e,t.start,t.length,o),i&&(i.next=o.id),o&&(o.prev=i.id)},gt={append:function(t,e){return pt(this,t,e),this},prepend:function(t,e){return vt(this,t,e),this},delete:function(t){return mt(this,t),this},replace:function(t,e){var r=this.length;pt(this,t,e);var n=this.buildFrom(this.start,this.length);n.length=r,mt(n,e)},splitOn:function(t){var e=this.terms(),r={before:null,match:null,after:null},n=e.findIndex((function(e){return e.id===t.start}));if(-1===n)return r;var i=e.slice(0,n);i.length>0&&(r.before=this.buildFrom(i[0].id,i.length));var o=e.slice(n,n+t.length);o.length>0&&(r.match=this.buildFrom(o[0].id,o.length));var s=e.slice(n+t.length,e.length);return s.length>0&&(r.after=this.buildFrom(s[0].id,s.length,this.pool)),r}},bt={json:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r={};return t.text&&(r.text=this.text()),t.normal&&(r.normal=this.text("normal")),t.clean&&(r.clean=this.text("clean")),t.reduced&&(r.reduced=this.text("reduced")),t.root&&(r.root=this.text("root")),t.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),t.terms&&(!0===t.terms&&(t.terms={}),r.terms=this.terms().map((function(r){return r.json(t.terms,e)}))),r}},yt={lookAhead:function(t){t||(t=".*");var e=this.pool,r=[],n=this.terms();return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(t)},lookBehind:function(t){t||(t=".*");var e=this.pool,r=[];return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.prev))}(e.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(t)}},At=Object.assign({},at,ct,ht,gt,bt,yt),wt=function(t,e){if(0===e.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},xt=function(t,e,r,n,i,o){for(var s=e;es)return[!1,null];if(!0===u.end&&r+s!==n)return[!1,null]}if(c){var d=jt(i,h,t,p,u.named);s>1&&u.greedy?d.length+=s-p:d.length++}}else if(!0!==u.optional){if(!(t[s].isImplicit()&&e[a-1]&&t[s+1]&&t[s+1].doesMatch(u,r+s,n)))return[!1,null];s+=2}}else{var v=Pt(t,s,e[a+1],u,r);if(void 0!==u.min&&v-su.max){s+=u.max;continue}if(null===v)return[!1,null];c&&(jt(i,h,t,s,u.named).length=v-s),s=v}}return[t.slice(0,s),i]},Ot=function(t,e,r){if(!r||0===r.length)return r;if(e.some((function(t){return t.end}))){var n=t[t.length-1];r=r.filter((function(t){return-1!==t.match.indexOf(n)}))}return r},Ct=/\{([0-9]+,?[0-9]*)\}/,kt=/&&/,Ft=new RegExp(/^<(\S+)>/),Tt=function(t){return t[t.length-1]},Nt=function(t){return t[0]},$t=function(t){return t.substr(1)},Vt=function(t){return t.substr(0,t.length-1)},St=function(t){return t=$t(t),t=Vt(t)},Bt=function t(e){for(var r,n={},i=0;i<2;i+=1){if("$"===Tt(e)&&(n.end=!0,e=Vt(e)),"^"===Nt(e)&&(n.start=!0,e=$t(e)),("["===Nt(e)||"]"===Tt(e))&&(n.named=!0,"["===Nt(e)?n.groupType="]"===Tt(e)?"single":"start":n.groupType="end",e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===Nt(e))){var o=Ft.exec(e);o.length>=2&&(n.named=o[1],e=e.replace(o[0],""))}if("+"===Tt(e)&&(n.greedy=!0,e=Vt(e)),"*"!==e&&"*"===Tt(e)&&"\\*"!==e&&(n.greedy=!0,e=Vt(e)),"?"===Tt(e)&&(n.optional=!0,e=Vt(e)),"!"===Nt(e)&&(n.negative=!0,e=$t(e)),"("===Nt(e)&&")"===Tt(e)){kt.test(e)?(n.choices=e.split(kt),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=$t(n.choices[0]);var s=n.choices.length-1;n.choices[s]=Vt(n.choices[s]),n.choices=n.choices.map((function(t){return t.trim()})),n.choices=n.choices.filter((function(t){return t})),n.choices=n.choices.map(t),e=""}if("/"===Nt(e)&&"/"===Tt(e))return e=St(e),n.regex=new RegExp(e),n;if("~"===Nt(e)&&"~"===Tt(e))return e=St(e),n.soft=!0,n.word=e,n}return!0===Ct.test(e)&&(e=e.replace(Ct,(function(t,e){var r=e.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,""}))),"#"===Nt(e)?(n.tag=$t(e),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Nt(e)?(n.method=$t(e),n):"."===e?(n.anything=!0,n):"*"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),n.word=e.toLowerCase()),n)},It=function(t){return t.filter((function(t){return t.groupType})).length>0&&(t=function(t){for(var e,r,n=!1,i=-1,o=0;o)?\(.*?\)[?+*]*\]?\$?)/);return e.map((function(t){return t.trim()}))}(e);return r=(r=function(t){var e=[];return t.forEach((function(t){if(/^[[^_/]?\(/.test(t[0]))e.push(t);else{var r=t.split(" ");r=r.filter((function(t){return t})),e=e.concat(r)}})),e}(r)).map(Bt),r=It(r)},Mt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e&&(e=Dt(e)),!0===wt(t,e))return[];var n=e.filter((function(t){return!0!==t.optional})).length,i=t.terms(),o=[];if(!0===e[0].start){var s=Et(i,e,0,i.length),a=c(s,2),u=a[0],h=a[1];return!1!==u&&u.length>0&&(u=u.filter((function(t){return t})),o.push({match:u,groups:h})),Ot(i,e,o)}for(var l=0;li.length);l+=1){var f=Et(i.slice(l),e,l,i.length),p=c(f,2),d=p[0],v=p[1];if(!1!==d&&d.length>0&&(l+=d.length-1,d=d.filter((function(t){return t})),o.push({match:d,groups:v}),!0===r))return Ot(i,e,o)}return Ot(i,e,o)},qt=function(t,e){var r={};Mt(t,e).forEach((function(t){t.match.forEach((function(t){r[t.id]=!0}))}));var n=t.terms(),i=[],o=[];return n.forEach((function(t){!0!==r[t.id]?o.push(t):o.length>0&&(i.push(o),o=[])})),o.length>0&&i.push(o),i},Lt={match:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Mt(this,t,r);return n=n.map((function(t){var r=t.match,n=t.groups,i=e.buildFrom(r[0].id,r.length,n);return i.cache.terms=r,i}))},has:function(t){return Mt(this,t,!0).length>0},not:function(t){var e=this,r=qt(this,t);return r=r.map((function(t){return e.buildFrom(t[0].id,t.length)}))},canBe:function(t,e){for(var r=this,n=[],i=this.terms(),o=!1,s=0;s0})).map((function(t){return r.buildFrom(t[0].id,t.length)}))}},zt=function t(r,n,i){e(this,t),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};zt.prototype.buildFrom=function(t,e,r){var n=new zt(t,e,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(zt.prototype,Lt),Object.assign(zt.prototype,At);var Wt={term:"terms"};Object.keys(Wt).forEach((function(t){return zt.prototype[t]=zt.prototype[Wt[t]]}));var _t=zt,Rt=function(){function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(t,[{key:"add",value:function(t){return this.words[t.id]=t,this}},{key:"get",value:function(t){return this.words[t]}},{key:"remove",value:function(t){delete this.words[t]}},{key:"merge",value:function(t){return Object.assign(this.words,t.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),t}();Rt.prototype.clone=function(){var t=this,e=Object.keys(this.words).reduce((function(e,r){var n=t.words[r].clone();return e[n.id]=n,e}),{});return new Rt(e)};var Ut=Rt,Ht=function(t){t.forEach((function(e,r){r>0&&(e.prev=t[r-1].id),t[r+1]&&(e.next=t[r+1].id)}))},Gt=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,Qt=/\S/,Zt=/[ .][A-Z]\.? *$/i,Jt=/(?:\u2026|\.{2,}) *$/,Yt=/((?:\r?\n|\r)+)/,Kt=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Xt=/^\s+/,te=function(t,e){if(!0===Zt.test(t))return!1;if(!0===Jt.test(t))return!1;if(!1===Kt.test(t))return!1;var r=t.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!e.hasOwnProperty(n)},ee=function(t,e){var r=e.cache.abbreviations;t=t||"";var n=[],i=[];if(!(t=String(t))||"string"!=typeof t||!1===Qt.test(t))return n;for(var o=function(t){for(var e=[],r=t.split(Yt),n=0;n0&&(n.push(c),i[u]="")}if(0===n.length)return[t];for(var h=1;h0?(e[e.length-1]+=o,e.push(a)):e.push(o+a),o=""):o+=a}return o&&(0===e.length&&(e[0]=""),e[e.length-1]+=o),e=(e=function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof t&&("number"==typeof t?t=String(t):he(t)&&(n=t)),n=(n=n||ee(t,e)).map((function(t){return ce(t)})),r=r||new Ut;var i=n.map((function(t){t=t.map((function(t){var e=new st(t);return r.add(e),e})),Ht(t);var e=new _t(t[0].id,t.length,r);return e.cache.terms=t,e}));return i},fe=function(t,e){var r=new Ut;return t.map((function(t,n){var i=t.terms.map((function(i,o){var s=new st(i.text);return s.pre=void 0!==i.pre?i.pre:"",void 0===i.post&&(i.post=" ",o>=t.terms.length-1&&(i.post=". ",n>=t.terms.length-1&&(i.post="."))),s.post=void 0!==i.post?i.post:" ",i.tags&&i.tags.forEach((function(t){return s.tag(t,"",e)})),r.add(s),s}));return Ht(i),new _t(i[0].id,i.length,r)}))},pe={},de=["Person","Place","Organization"],ve={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:de},Actor:{isA:"Noun",notA:de},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:de},Demonym:{isA:["Noun","ProperNoun"],notA:de},Possessive:{isA:"Noun"}},me={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},ge={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},be=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],ye={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Time:{isA:["Date"],notA:["Value"]},Determiner:{notA:be},Conjunction:{notA:be},Preposition:{notA:be},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},Ae={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},we=function(t){return Object.keys(t).forEach((function(e){t[e].color?t[e].color=t[e].color:Ae[e]?t[e].color=Ae[e]:t[e].isA.some((function(r){return!!Ae[r]&&(t[e].color=Ae[r],!0)}))})),t},xe=function(t){return Object.keys(t).forEach((function(e){for(var r=t[e],n=r.isA.length,i=0;i1&&(r.hasCompound[o[0]]=!0),"Singular"===e){var s=i.toPlural(t,r);n[s]=n[s]||"Plural"}if("Infinitive"===e)for(var a=i.conjugate(t,r),u=Object.keys(a),c=0;c1?i[o]&&"."!==i[o]&&r.tag(i[o],n,e.world):r.tag(t,n,e.world)}))}))},Re={tag:function(t,e){return t?(_e(t,this,!1,e),this):this},tagSafe:function(t,e){return t?(_e(t,this,!0,e),this):this},unTag:function(t,e){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(t,e,r.world)}))})),this},canBe:function(t){if(!t)return this;var e=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(t,e))}),[]);return this.buildFrom(r)}},Ue={map:function(e){var r=this;if(!e)return this;var n=this.list.map((function(t,n){var i=r.buildFrom([t]);i.from=null;var o=e(i,n);return o&&o.list&&o.list[0]?o.list[0]:o}));return 0===(n=n.filter((function(t){return t}))).length?this.buildFrom(n):"object"!==t(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(t,e){var r=this;return t?(this.list.forEach((function(n,i){var o=r.buildFrom([n]);!0===e&&(o.from=null),t(o,i)})),this):this},filter:function(t){var e=this;if(!t)return this;var r=this.list.filter((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return this.buildFrom(r)},find:function(t){var e=this;if(!t)return this;var r=this.list.find((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return r?this.buildFrom([r]):void 0},some:function(t){var e=this;return t?this.list.some((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)})):this},random:function(t){if(!this.found)return this;var e=Math.floor(Math.random()*this.list.length);if(void 0===t){var r=[this.list[e]];return this.buildFrom(r)}return e+t>this.length&&(e=(e=this.length-t)<0?0:e),this.slice(e,e+t)}},He=function(t){return t.split(/[ -]/g)},Ge=function(t,e,r){for(var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return t.forEach((function(t,n){var i=!0;void 0!==e[n]&&(i=e[n]),t=(t=(t||"").toLowerCase()).replace(/[,;.!?]+$/,"");var o=He(t).map((function(t){return t.trim()}));r[o[0]]=r[o[0]]||{},1===o.length?r[o[0]].value=i:(r[o[0]].more=r[o[0]].more||[],r[o[0]].more.push({rest:o.slice(1),value:i}))})),r}(t,e),i=[],o=function(t){for(var e=r.list[t],o=e.terms().map((function(t){return t.reduced})),s=function(t){void 0!==n[o[t]]&&(void 0!==n[o[t]].more&&n[o[t]].more.forEach((function(r){void 0!==o[t+r.rest.length]&&(!0===r.rest.every((function(e,r){return e===o[t+r+1]}))&&i.push({id:e.terms()[t].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[o[t]].value&&i.push({id:e.terms()[t].id,value:n[o[t]].value,length:1}))},a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return e?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(i){var o,s=e;if("function"==typeof e&&(s=e(i)),s&&"object"===t(s)&&"Doc"===s.isA)o=s.list,r.pool().merge(s.pool());else{if("string"!=typeof s)return;!1!==n.keepCase&&i.terms(0).isTitleCase()&&(s=Je(s)),o=le(s,r.world,r.pool());var a=r.buildFrom(o);a.tagger(),o=a.list}if(!0===n.keepTags){var u=i.json({terms:{tags:!0}}).terms;o[0].terms().forEach((function(t,e){u[e]&&t.tagSafe(u[e].tags,"keptTag",r.world)}))}i.replace(o[0],r)})),this):this.delete()},replace:function(t,e,r){return void 0===e?this.replaceWith(t,r):(this.match(t).replaceWith(e,r),this)}},Ke=N((function(t,e){var r=function(t,e){var r=le(t,e.world)[0],n=e.buildFrom([r]);return n.tagger(),e.list=n.list,e};e.append=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(r){var n=le(t,e.world,e.pool())[0];e.buildFrom([n]).tagger(),r.append(n,e)})),this):r(t,this):this},e.insertAfter=e.append,e.insertAt=e.append,e.prepend=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(r){var n=le(t,e.world,e.pool())[0];e.buildFrom([n]).tagger(),r.prepend(n,e)})),this):r(t,this):this},e.insertBefore=e.prepend,e.concat=function(){this.uncache();for(var t=this.list.slice(0),e=0;e0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof e&&this.list[e])return this.list[e].json(r);!0===(e=n(e)).root&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))}));var i=this.list.map((function(r){return r.json(e,t.world)}));if((e.terms.offset||e.offset||e.terms.index||e.index)&&er(this,i,e),e.frequency||e.freq||e.count){var o={};this.list.forEach((function(t){var e=t.text("reduced");o[e]=o[e]||0,o[e]+=1})),this.list.forEach((function(t,e){i[e].count=o[t.text("reduced")]}))}if(e.unique){var s={};i=i.filter((function(t){return!0!==s[t.reduced]&&(s[t.reduced]=!0,!0)}))}return i},e.data=e.json})),nr=N((function(t){var e="",r=function(t,e){for(t=t.toString();t.lengthe.count?-1:t.countn?1:0},length:function(t,e){var r=t.text().trim().length,n=e.text().trim().length;return rn?-1:0},wordCount:function(t,e){var r=t.wordCount(),n=e.wordCount();return rn?-1:0}};sr.alphabetical=sr.alpha,sr.wordcount=sr.wordCount;var ar={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},ur={sort:function(t){return"freq"===(t=t||"alpha")||"frequency"===t||"topk"===t?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(e=this).list.forEach((function(t){var e=t.text(n);r[e]=r[e]||0,r[e]+=1})),e.list.sort((function(t,e){var i=r[t.text(n)],o=r[e.text(n)];return io?-1:0})),e):ar.hasOwnProperty(t)?function(t){var e={};return t.json({terms:{offset:!0}}).forEach((function(t){e[t.terms[0].id]=t.terms[0].offset.start})),t.list=t.list.sort((function(t,r){return e[t.start]>e[r.start]?1:e[t.start]0){i+=s;continue}}if(void 0===r[o]||!0!==r.hasOwnProperty(o))if(o===t[i].reduced||!0!==r.hasOwnProperty(t[i].reduced)){if(!0===Or.test(o)){var a=o.replace(Or,"");!0===r.hasOwnProperty(a)&&t[i].tag(r[a],"noprefix-lexicon",e)}}else t[i].tag(r[t[i].reduced],"lexicon",e);else t[i].tag(r[o],"lexicon",e)}return t},Fr=function(t){var e=t.termList();return kr(e,t.world),t},Tr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){!0===t.tags.Abbreviation&&t.next&&(t.post=t.post.replace(/^\./,""));var e=t.text.replace(/\./,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){t.post=t.post.replace(/^\./,""),t.post="."+t.post})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,t.prototype.abbreviations=function(t){var e=this.match("#Abbreviation");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Nr=/\./,$r=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");e=e.split("").join("."),!1===Nr.test(t.post)&&(e+="."),t.set(e)})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,r.prototype.strip=r.prototype.stripPeriods,t.prototype.acronyms=function(t){var e=this.match("#Acronym");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Vr=function(t){return t.prototype.clauses=function(e){var r=this.if("@hasComma").notIf("@hasComma @hasComma").notIf("@hasComma . .? (and|or) .").notIf("(#City && @hasComma) #Country").notIf("(#Date && @hasComma) #Year").notIf("@hasComma (too|also)$").match("@hasComma"),n=this.splitAfter(r),i=n.quotations(),o=(n=n.splitOn(i)).parentheses(),s=(n=n.splitOn(o)).if("#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb").match("#Conjunction"),a=(n=n.splitBefore(s)).if("if .{2,9} then .").match("then"),u=(n=(n=(n=(n=(n=(n=n.splitBefore(a)).splitBefore("as well as .")).splitBefore("such as .")).splitBefore("in addition to .")).splitAfter("@hasSemicolon")).splitAfter("@hasDash")).filter((function(t){return t.wordCount()>5&&t.match("#Verb+").length>=2}));if(u.found){var c=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(c.eq(0))}return"number"==typeof e&&(n=n.get(e)),new t(n.list,this,this.world)},t},Sr=function(t){var r=function(t){i(o,t);var r=u(o);function o(t,n,i){var s;return e(this,o),(s=r.call(this,t,n,i)).contracted=null,s}return n(o,[{key:"expand",value:function(){return this.list.forEach((function(t){var e=t.terms(),r=e[0].isTitleCase();e.forEach((function(t,r){t.set(t.implicit||t.text),t.implicit=void 0,r0}}),Object.defineProperty(this,"length",{get:function(){return o.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(t,[{key:"tagger",value:function(){return Fr(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),t}();mn.prototype.buildFrom=function(t){return t=t.map((function(t){return t.clone(!0)})),new mn(t,this,this.world)},mn.prototype.fromText=function(t){var e=le(t,this.world,this.pool());return this.buildFrom(e)},Object.assign(mn.prototype,vn.misc),Object.assign(mn.prototype,vn.selections),dn(mn);var gn={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(gn).forEach((function(t){return mn.prototype[t]=mn.prototype[gn[t]]}));var bn=mn;return function t(e){var r=e,n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;e&&r.addWords(e);var n=le(t,r),i=new bn(n,null,r);return i.tagger(),i};return n.tokenize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,n=r;e&&((n=n.clone()).words={},n.addWords(e));var i=le(t,n),o=new bn(i,null,n);return e&&Fr(o),o},n.extend=function(t){return t(bn,r,this,_t,st,Ut),this},n.fromJSON=function(t){var e=fe(t,r);return new bn(e,null,r)},n.clone=function(){return t(r.clone())},n.verbose=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(t),this},n.world=function(){return r},n.parseMatch=function(t){return Dt(t)},n.version="13.5.0",n.import=n.load,n}(new Me)})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).nlp=e()}(this,(function(){"use strict";function t(e){return(t="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})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rn[e].lineage.length?1:n[t].isA.length>n[e].isA.length?-1:0:0:1}))},G={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},R={json:function(t,e){t=t||{};var r={};return(t=Object.assign({},G,t)).text&&(r.text=this.text),t.normal&&(r.normal=this.normal),t.tags&&(r.tags=Object.keys(this.tags)),t.clean&&(r.clean=this.clean),(t.id||t.offset)&&(r.id=this.id),t.implicit&&null!==this.implicit&&(r.implicit=this.implicit),t.whitespace&&(r.pre=this.pre,r.post=this.post),t.bestTag&&(r.bestTag=_(this,e)[0]),r}},U=Object.assign({},$,V,q,z,R);function H(){return"undefined"!=typeof window&&window.document}var Q=function(t,e){for(t=t.toString();t.length0&&void 0!==arguments[0]?arguments[0]:"";e(this,t),r=String(r);var n=T(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=f(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(t,[{key:"set",value:function(t){var e=T(t);return this.text=e.text,this.clean=e.clean,this}}]),t}();ot.prototype.clone=function(){var t=new ot(this.text);return t.pre=this.pre,t.post=this.post,t.clean=this.clean,t.reduced=this.reduced,t.root=this.root,t.implicit=this.implicit,t.tags=Object.assign({},this.tags),t},Object.assign(ot.prototype,U),Object.assign(ot.prototype,it);var st=ot,at={terms:function(t){if(0===this.length)return[];if(this.cache.terms)return void 0!==t?this.cache.terms[t]:this.cache.terms;for(var e=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof t&&(t="normal"===t?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===t?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===t?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),i=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(i=!0);var o=n.reduce((function(o,s,a){t.last=r&&a===n.length-1;var u=!0,c=!0;return!1===i&&(0===a&&e&&(u=!1),a===n.length-1&&r&&(c=!1)),o+s.textOut(t,u,c)}),"");return!0===i&&r&&(o=ut(o)),!0===t.trim&&(o=o.trim()),o}},ht={trim:function(){var t=this.terms();if(t.length>0){t[0].pre=t[0].pre.replace(/^\s+/,"");var e=t[t.length-1];e.post=e.post.replace(/\s+$/,"")}return this}},lt=/[.?!]\s*$/,ft=function(t,e){e[0].pre=t[0].pre;var r,n,i=t[t.length-1],o=e[e.length-1];o.post=(r=i.post,n=o.post,lt.test(n)?n+r.match(/\s*$/):r),i.post="",""===i.post&&(i.post+=" ")},pt=function(t,e,r){var n=t.terms(),i=e.terms();ft(n,i),function(t,e,r){var n=t[t.length-1],i=e[e.length-1],o=n.next;n.next=e[0].id,i.next=o,o&&(r.get(o).prev=i.id);var s=t[0].id;s&&(e[0].prev=s)}(n,i,t.pool);var o,s=[t],a=t.start,u=[r];return(u=u.concat(r.parents())).forEach((function(t){var e=t.list.filter((function(t){return t.hasId(a)}));s=s.concat(e)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length})),t.cache={},t},dt=/ /,vt=function(t,e,r){var n=t.start,i=e.terms();!function(t){var e=t[t.length-1];!1===dt.test(e.post)&&(e.post+=" ")}(i),function(t,e,r){var n=r[r.length-1];n.next=t.start;var i=t.pool,o=i.get(t.start);o.prev&&(i.get(o.prev).next=e.start),r[0].prev=t.terms(0).prev,t.terms(0).prev=n.id}(t,e,i);var o,s=[t],a=[r];return(a=a.concat(r.parents())).forEach((function(t){var r=t.list.filter((function(t){return t.hasId(n)||t.hasId(e.start)}));s=s.concat(r)})),(s=(o=s).filter((function(t,e){return o.indexOf(t)===e}))).forEach((function(t){t.length+=e.length,t.start===n&&(t.start=e.start),t.cache={}})),t},mt=function(t,e){var r=e.pool(),n=t.terms(),i=r.get(n[0].prev)||{},o=r.get(n[n.length-1].next)||{};n[0].implicit&&i.implicit&&(i.set(i.implicit),i.post+=" "),function(t,e,r,n){var i=t.parents();i.push(t),i.forEach((function(t){var i=t.list.find((function(t){return t.hasId(e)}));i&&(i.length-=r,i.start===e&&(i.start=n.id),i.cache={})})),t.list=t.list.filter((function(t){return!(!t.start||!t.length)}))}(e,t.start,t.length,o),i&&(i.next=o.id),o&&(o.prev=i.id)},gt={append:function(t,e){return pt(this,t,e),this},prepend:function(t,e){return vt(this,t,e),this},delete:function(t){return mt(this,t),this},replace:function(t,e){var r=this.length;pt(this,t,e);var n=this.buildFrom(this.start,this.length);n.length=r,mt(n,e)},splitOn:function(t){var e=this.terms(),r={before:null,match:null,after:null},n=e.findIndex((function(e){return e.id===t.start}));if(-1===n)return r;var i=e.slice(0,n);i.length>0&&(r.before=this.buildFrom(i[0].id,i.length));var o=e.slice(n,n+t.length);o.length>0&&(r.match=this.buildFrom(o[0].id,o.length));var s=e.slice(n+t.length,e.length);return s.length>0&&(r.after=this.buildFrom(s[0].id,s.length,this.pool)),r}},bt={json:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r={};return t.text&&(r.text=this.text()),t.normal&&(r.normal=this.text("normal")),t.clean&&(r.clean=this.text("clean")),t.reduced&&(r.reduced=this.text("reduced")),t.root&&(r.root=this.text("root")),t.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),t.terms&&(!0===t.terms&&(t.terms={}),r.terms=this.terms().map((function(r){return r.json(t.terms,e)}))),r}},yt={lookAhead:function(t){t||(t=".*");var e=this.pool,r=[],n=this.terms();return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(t)},lookBehind:function(t){t||(t=".*");var e=this.pool,r=[];return function t(n){var i=e.get(n);i&&(r.push(i),i.prev&&t(i.prev))}(e.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(t)}},At=Object.assign({},at,ct,ht,gt,bt,yt),wt=function(t,e){if(0===e.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},xt=function(t,e,r,n,i,o){for(var s=e;es)return[!1,null];if(!0===u.end&&r+s!==n)return[!1,null]}if(c){var d=jt(i,h,t,p,u.named);s>1&&u.greedy?d.length+=s-p:d.length++}}else if(!0!==u.optional){if(!(t[s].isImplicit()&&e[a-1]&&t[s+1]&&t[s+1].doesMatch(u,r+s,n)))return[!1,null];s+=2}}else{var v=Pt(t,s,e[a+1],u,r);if(void 0!==u.min&&v-su.max){s+=u.max;continue}if(null===v)return[!1,null];c&&(jt(i,h,t,s,u.named).length=v-s),s=v}}return[t.slice(0,s),i]},Ot=function(t,e,r){if(!r||0===r.length)return r;if(e.some((function(t){return t.end}))){var n=t[t.length-1];r=r.filter((function(t){return-1!==t.match.indexOf(n)}))}return r},Ct=/\{([0-9]+,?[0-9]*)\}/,kt=/&&/,Ft=new RegExp(/^<(\S+)>/),Tt=function(t){return t[t.length-1]},Nt=function(t){return t[0]},$t=function(t){return t.substr(1)},Vt=function(t){return t.substr(0,t.length-1)},St=function(t){return t=$t(t),t=Vt(t)},Bt=function t(e){for(var r,n={},i=0;i<2;i+=1){if("$"===Tt(e)&&(n.end=!0,e=Vt(e)),"^"===Nt(e)&&(n.start=!0,e=$t(e)),("["===Nt(e)||"]"===Tt(e))&&(n.named=!0,"["===Nt(e)?n.groupType="]"===Tt(e)?"single":"start":n.groupType="end",e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===Nt(e))){var o=Ft.exec(e);o.length>=2&&(n.named=o[1],e=e.replace(o[0],""))}if("+"===Tt(e)&&(n.greedy=!0,e=Vt(e)),"*"!==e&&"*"===Tt(e)&&"\\*"!==e&&(n.greedy=!0,e=Vt(e)),"?"===Tt(e)&&(n.optional=!0,e=Vt(e)),"!"===Nt(e)&&(n.negative=!0,e=$t(e)),"("===Nt(e)&&")"===Tt(e)){kt.test(e)?(n.choices=e.split(kt),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=$t(n.choices[0]);var s=n.choices.length-1;n.choices[s]=Vt(n.choices[s]),n.choices=n.choices.map((function(t){return t.trim()})),n.choices=n.choices.filter((function(t){return t})),n.choices=n.choices.map(t),e=""}if("/"===Nt(e)&&"/"===Tt(e))return e=St(e),n.regex=new RegExp(e),n;if("~"===Nt(e)&&"~"===Tt(e))return e=St(e),n.soft=!0,n.word=e,n}return!0===Ct.test(e)&&(e=e.replace(Ct,(function(t,e){var r=e.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,""}))),"#"===Nt(e)?(n.tag=$t(e),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Nt(e)?(n.method=$t(e),n):"."===e?(n.anything=!0,n):"*"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),n.word=e.toLowerCase()),n)},It=function(t){return t.filter((function(t){return t.groupType})).length>0&&(t=function(t){for(var e,r,n=!1,i=-1,o=0;o)?\(.*?\)[?+*]*\]?\$?)/);return e.map((function(t){return t.trim()}))}(e);return r=(r=function(t){var e=[];return t.forEach((function(t){if(/^[[^_/]?\(/.test(t[0]))e.push(t);else{var r=t.split(" ");r=r.filter((function(t){return t})),e=e.concat(r)}})),e}(r)).map(Bt),r=It(r)},qt=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e&&(e=Dt(e)),!0===wt(t,e))return[];var n=e.filter((function(t){return!0!==t.optional})).length,i=t.terms(),o=[];if(!0===e[0].start){var s=Et(i,e,0,i.length),a=c(s,2),u=a[0],h=a[1];return!1!==u&&u.length>0&&(u=u.filter((function(t){return t})),o.push({match:u,groups:h})),Ot(i,e,o)}for(var l=0;li.length);l+=1){var f=Et(i.slice(l),e,l,i.length),p=c(f,2),d=p[0],v=p[1];if(!1!==d&&d.length>0&&(l+=d.length-1,d=d.filter((function(t){return t})),o.push({match:d,groups:v}),!0===r))return Ot(i,e,o)}return Ot(i,e,o)},Mt=function(t,e){var r={};qt(t,e).forEach((function(t){t.match.forEach((function(t){r[t.id]=!0}))}));var n=t.terms(),i=[],o=[];return n.forEach((function(t){!0!==r[t.id]?o.push(t):o.length>0&&(i.push(o),o=[])})),o.length>0&&i.push(o),i},Lt={match:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=qt(this,t,r);return n=n.map((function(t){var r=t.match,n=t.groups,i=e.buildFrom(r[0].id,r.length,n);return i.cache.terms=r,i}))},has:function(t){return qt(this,t,!0).length>0},not:function(t){var e=this,r=Mt(this,t);return r=r.map((function(t){return e.buildFrom(t[0].id,t.length)}))},canBe:function(t,e){for(var r=this,n=[],i=this.terms(),o=!1,s=0;s0})).map((function(t){return r.buildFrom(t[0].id,t.length)}))}},zt=function t(r,n,i){e(this,t),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};zt.prototype.buildFrom=function(t,e,r){var n=new zt(t,e,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(zt.prototype,Lt),Object.assign(zt.prototype,At);var Wt={term:"terms"};Object.keys(Wt).forEach((function(t){return zt.prototype[t]=zt.prototype[Wt[t]]}));var _t=zt,Gt=function(){function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(t,[{key:"add",value:function(t){return this.words[t.id]=t,this}},{key:"get",value:function(t){return this.words[t]}},{key:"remove",value:function(t){delete this.words[t]}},{key:"merge",value:function(t){return Object.assign(this.words,t.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),t}();Gt.prototype.clone=function(){var t=this,e=Object.keys(this.words).reduce((function(e,r){var n=t.words[r].clone();return e[n.id]=n,e}),{});return new Gt(e)};var Rt=Gt,Ut=function(t){t.forEach((function(e,r){r>0&&(e.prev=t[r-1].id),t[r+1]&&(e.next=t[r+1].id)}))},Ht=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,Qt=/\S/,Zt=/[ .][A-Z]\.? *$/i,Jt=/(?:\u2026|\.{2,}) *$/,Yt=/((?:\r?\n|\r)+)/,Kt=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Xt=/^\s+/,te=function(t,e){if(!0===Zt.test(t))return!1;if(!0===Jt.test(t))return!1;if(!1===Kt.test(t))return!1;var r=t.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!e.hasOwnProperty(n)},ee=function(t,e){var r=e.cache.abbreviations;t=t||"";var n=[],i=[];if(!(t=String(t))||"string"!=typeof t||!1===Qt.test(t))return n;for(var o=function(t){for(var e=[],r=t.split(Yt),n=0;n0&&(n.push(c),i[u]="")}if(0===n.length)return[t];for(var h=1;h0?(e[e.length-1]+=o,e.push(a)):e.push(o+a),o=""):o+=a}return o&&(0===e.length&&(e[0]=""),e[e.length-1]+=o),e=(e=function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof t&&("number"==typeof t?t=String(t):he(t)&&(n=t)),n=(n=n||ee(t,e)).map((function(t){return ce(t)})),r=r||new Rt;var i=n.map((function(t){t=t.map((function(t){var e=new st(t);return r.add(e),e})),Ut(t);var e=new _t(t[0].id,t.length,r);return e.cache.terms=t,e}));return i},fe=function(t,e){var r=new Rt;return t.map((function(t,n){var i=t.terms.map((function(i,o){var s=new st(i.text);return s.pre=void 0!==i.pre?i.pre:"",void 0===i.post&&(i.post=" ",o>=t.terms.length-1&&(i.post=". ",n>=t.terms.length-1&&(i.post="."))),s.post=void 0!==i.post?i.post:" ",i.tags&&i.tags.forEach((function(t){return s.tag(t,"",e)})),r.add(s),s}));return Ut(i),new _t(i[0].id,i.length,r)}))},pe={},de=["Person","Place","Organization"],ve={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:de},Actor:{isA:"Noun",notA:de},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:de},Demonym:{isA:["Noun","ProperNoun"],notA:de},Possessive:{isA:"Noun"}},me={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},ge={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},be=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],ye={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Time:{isA:["Date"],notA:["Value"]},Determiner:{notA:be},Conjunction:{notA:be},Preposition:{notA:be},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},Ae={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},we=function(t){return Object.keys(t).forEach((function(e){t[e].color?t[e].color=t[e].color:Ae[e]?t[e].color=Ae[e]:t[e].isA.some((function(r){return!!Ae[r]&&(t[e].color=Ae[r],!0)}))})),t},xe=function(t){return Object.keys(t).forEach((function(e){for(var r=t[e],n=r.isA.length,i=0;i1&&(r.hasCompound[o[0]]=!0),"Singular"===e){var s=i.toPlural(t,r);n[s]=n[s]||"Plural"}if("Infinitive"===e)for(var a=i.conjugate(t,r),u=Object.keys(a),c=0;c1?i[o]&&"."!==i[o]&&r.tag(i[o],n,e.world):r.tag(t,n,e.world)}))}))},Ge={tag:function(t,e){return t?(_e(t,this,!1,e),this):this},tagSafe:function(t,e){return t?(_e(t,this,!0,e),this):this},unTag:function(t,e){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(t,e,r.world)}))})),this},canBe:function(t){if(!t)return this;var e=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(t,e))}),[]);return this.buildFrom(r)}},Re={map:function(e){var r=this;if(!e)return this;var n=this.list.map((function(t,n){var i=r.buildFrom([t]);i.from=null;var o=e(i,n);return o&&o.list&&o.list[0]?o.list[0]:o}));return 0===(n=n.filter((function(t){return t}))).length?this.buildFrom(n):"object"!==t(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(t,e){var r=this;return t?(this.list.forEach((function(n,i){var o=r.buildFrom([n]);!0===e&&(o.from=null),t(o,i)})),this):this},filter:function(t){var e=this;if(!t)return this;var r=this.list.filter((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return this.buildFrom(r)},find:function(t){var e=this;if(!t)return this;var r=this.list.find((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)}));return r?this.buildFrom([r]):void 0},some:function(t){var e=this;return t?this.list.some((function(r,n){var i=e.buildFrom([r]);return i.from=null,t(i,n)})):this},random:function(t){if(!this.found)return this;var e=Math.floor(Math.random()*this.list.length);if(void 0===t){var r=[this.list[e]];return this.buildFrom(r)}return e+t>this.length&&(e=(e=this.length-t)<0?0:e),this.slice(e,e+t)}},Ue=function(t){return t.split(/[ -]/g)},He=function(t,e,r){for(var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return t.forEach((function(t,n){var i=!0;void 0!==e[n]&&(i=e[n]),t=(t=(t||"").toLowerCase()).replace(/[,;.!?]+$/,"");var o=Ue(t).map((function(t){return t.trim()}));r[o[0]]=r[o[0]]||{},1===o.length?r[o[0]].value=i:(r[o[0]].more=r[o[0]].more||[],r[o[0]].more.push({rest:o.slice(1),value:i}))})),r}(t,e),i=[],o=function(t){for(var e=r.list[t],o=e.terms().map((function(t){return t.reduced})),s=function(t){void 0!==n[o[t]]&&(void 0!==n[o[t]].more&&n[o[t]].more.forEach((function(r){void 0!==o[t+r.rest.length]&&(!0===r.rest.every((function(e,r){return e===o[t+r+1]}))&&i.push({id:e.terms()[t].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[o[t]].value&&i.push({id:e.terms()[t].id,value:n[o[t]].value,length:1}))},a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return e?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(i){var o,s=e;if("function"==typeof e&&(s=e(i)),s&&"object"===t(s)&&"Doc"===s.isA)o=s.list,r.pool().merge(s.pool());else{if("string"!=typeof s)return;!1!==n.keepCase&&i.terms(0).isTitleCase()&&(s=Je(s)),o=le(s,r.world,r.pool());var a=r.buildFrom(o);a.tagger(),o=a.list}if(!0===n.keepTags){var u=i.json({terms:{tags:!0}}).terms;o[0].terms().forEach((function(t,e){u[e]&&t.tagSafe(u[e].tags,"keptTag",r.world)}))}i.replace(o[0],r)})),this):this.delete()},replace:function(t,e,r){return void 0===e?this.replaceWith(t,r):(this.match(t).replaceWith(e,r),this)}},Ke=N((function(t,e){var r=function(t,e){var r=le(t,e.world)[0],n=e.buildFrom([r]);return n.tagger(),e.list=n.list,e};e.append=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(r){var n=le(t,e.world,e.pool())[0];e.buildFrom([n]).tagger(),r.append(n,e)})),this):r(t,this):this},e.insertAfter=e.append,e.insertAt=e.append,e.prepend=function(t){var e=this;return t?this.found?(this.uncache(),this.list.forEach((function(r){var n=le(t,e.world,e.pool())[0];e.buildFrom([n]).tagger(),r.prepend(n,e)})),this):r(t,this):this},e.insertBefore=e.prepend,e.concat=function(){this.uncache();for(var t=this.list.slice(0),e=0;e0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof e&&this.list[e])return this.list[e].json(r);!0===(e=n(e)).root&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))}));var i=this.list.map((function(r){return r.json(e,t.world)}));if((e.terms.offset||e.offset||e.terms.index||e.index)&&er(this,i,e),e.frequency||e.freq||e.count){var o={};this.list.forEach((function(t){var e=t.text("reduced");o[e]=o[e]||0,o[e]+=1})),this.list.forEach((function(t,e){i[e].count=o[t.text("reduced")]}))}if(e.unique){var s={};i=i.filter((function(t){return!0!==s[t.reduced]&&(s[t.reduced]=!0,!0)}))}return i},e.data=e.json})),nr=N((function(t){var e="",r=function(t,e){for(t=t.toString();t.lengthe.count?-1:t.countn?1:0},length:function(t,e){var r=t.text().trim().length,n=e.text().trim().length;return rn?-1:0},wordCount:function(t,e){var r=t.wordCount(),n=e.wordCount();return rn?-1:0}};sr.alphabetical=sr.alpha,sr.wordcount=sr.wordCount;var ar={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},ur={sort:function(t){return"freq"===(t=t||"alpha")||"frequency"===t||"topk"===t?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(e=this).list.forEach((function(t){var e=t.text(n);r[e]=r[e]||0,r[e]+=1})),e.list.sort((function(t,e){var i=r[t.text(n)],o=r[e.text(n)];return io?-1:0})),e):ar.hasOwnProperty(t)?function(t){var e={};return t.json({terms:{offset:!0}}).forEach((function(t){e[t.terms[0].id]=t.terms[0].offset.start})),t.list=t.list.sort((function(t,r){return e[t.start]>e[r.start]?1:e[t.start]0){i+=s;continue}}if(void 0===r[o]||!0!==r.hasOwnProperty(o))if(o===t[i].reduced||!0!==r.hasOwnProperty(t[i].reduced)){if(!0===Or.test(o)){var a=o.replace(Or,"");!0===r.hasOwnProperty(a)&&t[i].tag(r[a],"noprefix-lexicon",e)}}else t[i].tag(r[t[i].reduced],"lexicon",e);else t[i].tag(r[o],"lexicon",e)}return t},Fr=function(t){var e=t.termList();return kr(e,t.world),t},Tr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){!0===t.tags.Abbreviation&&t.next&&(t.post=t.post.replace(/^\./,""));var e=t.text.replace(/\./,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){t.post=t.post.replace(/^\./,""),t.post="."+t.post})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,t.prototype.abbreviations=function(t){var e=this.match("#Abbreviation");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Nr=/\./,$r=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"stripPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");t.set(e)})),this}},{key:"addPeriods",value:function(){return this.termList().forEach((function(t){var e=t.text.replace(/\./g,"");e=e.split("").join("."),!1===Nr.test(t.post)&&(e+="."),t.set(e)})),this}}]),o}(t);return r.prototype.unwrap=r.prototype.stripPeriods,r.prototype.strip=r.prototype.stripPeriods,t.prototype.acronyms=function(t){var e=this.match("#Acronym");return"number"==typeof t&&(e=e.get(t)),new r(e.list,this,this.world)},t},Vr=function(t){return t.prototype.clauses=function(e){var r=this.if("@hasComma").notIf("@hasComma @hasComma").notIf("@hasComma . .? (and|or) .").notIf("(#City && @hasComma) #Country").notIf("(#WeekDay && @hasComma) #Date").notIf("(#Date && @hasComma) #Year").notIf("@hasComma (too|also)$").match("@hasComma"),n=this.splitAfter(r),i=n.quotations(),o=(n=n.splitOn(i)).parentheses(),s=(n=n.splitOn(o)).if("#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb").match("#Conjunction"),a=(n=n.splitBefore(s)).if("if .{2,9} then .").match("then"),u=(n=(n=(n=(n=(n=(n=n.splitBefore(a)).splitBefore("as well as .")).splitBefore("such as .")).splitBefore("in addition to .")).splitAfter("@hasSemicolon")).splitAfter("@hasDash")).filter((function(t){return t.wordCount()>5&&t.match("#Verb+").length>=2}));if(u.found){var c=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(c.eq(0))}return"number"==typeof e&&(n=n.get(e)),new t(n.list,this,this.world)},t},Sr=function(t){var r=function(t){i(o,t);var r=u(o);function o(t,n,i){var s;return e(this,o),(s=r.call(this,t,n,i)).contracted=null,s}return n(o,[{key:"expand",value:function(){return this.list.forEach((function(t){var e=t.terms(),r=e[0].isTitleCase();e.forEach((function(t,r){t.set(t.implicit||t.text),t.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),i=this.not(n).splitAfter("@hasComma"),o=(i=i.concat(n)).quotations();return o.found&&(i=i.splitOn(o.eq(0))),i=i.match("#Noun+ (of|by)? the? #Noun+?"),!0!==e.keep_anaphora&&(i=(i=(i=(i=i.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),i=i.not("(of|for|by|the)$"),"number"==typeof t&&(i=i.get(t)),new r(i.list,this,this.world)},t},Zr=/\(/,Jr=/\)/,Yr=function(t){var r=function(t){i(o,t);var r=u(o);function o(){return e(this,o),r.apply(this,arguments)}return n(o,[{key:"unwrap",value:function(){return this.list.forEach((function(t){var e=t.terms(0);e.pre=e.pre.replace(Zr,"");var r=t.lastTerm();r.post=r.post.replace(Jr,"")})),this}}]),o}(t);return t.prototype.parentheses=function(t){var e=[];return this.list.forEach((function(t){for(var r=t.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return o.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(t,[{key:"tagger",value:function(){return Fr(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),t}();bn.prototype.buildFrom=function(t){return t=t.map((function(t){return t.clone(!0)})),new bn(t,this,this.world)},bn.prototype.fromText=function(t){var e=le(t,this.world,this.pool());return this.buildFrom(e)},Object.assign(bn.prototype,gn.misc),Object.assign(bn.prototype,gn.selections),mn(bn);var yn={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(yn).forEach((function(t){return bn.prototype[t]=bn.prototype[yn[t]]}));var An=bn;return function t(e){var r=e,n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;e&&r.addWords(e);var n=le(t,r),i=new An(n,null,r);return i.tagger(),i};return n.tokenize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,n=r;e&&((n=n.clone()).words={},n.addWords(e));var i=le(t,n),o=new An(i,null,n);return e&&Fr(o),o},n.extend=function(t){return t(An,r,this,_t,st,Rt),this},n.fromJSON=function(t){var e=fe(t,r);return new An(e,null,r)},n.clone=function(){return t(r.clone())},n.verbose=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(t),this},n.world=function(){return r},n.parseMatch=function(t){return Dt(t)},n.version="13.6.0",n.import=n.load,n}(new qe)})); diff --git a/builds/compromise.js b/builds/compromise.js index 5670c2c86..c6a428659 100644 --- a/builds/compromise.js +++ b/builds/compromise.js @@ -1,4 +1,4 @@ -/* compromise 13.5.0 MIT */ +/* compromise 13.6.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -433,11 +433,11 @@ function createCommonjsModule(fn, basedir, module) { return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } }, fn(module, module.exports), module.exports; } @@ -3440,7 +3440,7 @@ var fromJSON_1 = fromJSON; - var _version = '13.5.0'; + var _version = '13.6.0'; var _data = { "Comparative": "true¦better", @@ -3457,40 +3457,40 @@ "Plural": "true¦records", "Conjunction": "true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:0Z;1:12;a0Yb0Mc0Dd06e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Ts 2;doll0Fst0H; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Y;ep3ri1u2;de0Rff;faOmoO;st0Nze;al0i1o2;om,se;a4i0Kl06r3u2;dMrpoE;erogaWobl0P;rt,te0J;bjTceHthers;othi1umb0F;a4ee05o2;del,m2nopo0th0D;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", - "Honorific": "true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", + "Singular": "true¦0:10;1:13;a0Zb0Nc0Ed07e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Us 2;doll0Gst0I; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Z;ep3ri1u2;de0Sff;faOmoO;st0Oze;al0i1o2;om,se;a4i0Ll07r3u2;dMrpoE;erogaXobl0Q;rt,te0K;bjUceHthers;othi1umb0G;a4ee06o2;del,m2nopo0rni1th0E;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irl00laci05od,rand3u2;l0y; slam,fa2mo2;th02;an;a5ella,ly,ol0r3un2;di1;iUo2;ntiXsO;mi0thW;conomy,gg,ner6ven3x2;ampRecu8;i1t;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", + "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", + "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", - "Uncountable": "true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics", - "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHuG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", + "Uncountable": "true¦0:1F;a1Mb1Ec15d12e0Vf0Pg0Ih0Di09j08knowled1Ll03mVnews,oUpRrMsBt6vi5w1;a3ea06i2oo1;d,l;ldlife,ne;rmth,t0;neg12ol07tae;e4h3oothpaste,r1una;affQou1;ble,sers,t;ermod1Hund0;a,nnis;a9cene05eri0Sh8il7kittl0Snow,o6p4t2u1;g0Vnshi0L;ati1Ge1;am,el;ace19e1;ci0Ned;ap,cc0;k,v0;eep,ingl0K;d08fe13l1nd;m0Wt;a4e2ic1;e,ke0H;c1laxa0Dsearch;ogni0Crea0C;bi0Din;aKe2hys13last6o1ressZ;lit12rk,w0;a0YtrV;bstetr10il,xygen;a6e4ilk,o3u1;mps,s1;ic;nHo0E;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics", + "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", - "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,p,rd,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,t,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", + "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", + "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", "Region": "true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "FemaleName": "true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:FS;6:ER;7:EP;8:GF;9:EZ;A:GB;B:E5;C:G8;D:FO;E:FL;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et7onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s5;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmCAra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lC;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaE;chGe,i0mo0n5EquCDvDy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et7in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s5;cy,et7;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eD;h75il9t2;a,cSgOiJjor2l6In2s5tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lCna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri7;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alCd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", + "FemaleName": "true¦0:FX;1:G1;2:FQ;3:FC;4:FB;5:FR;6:EQ;7:EO;8:GE;9:EY;A:GA;B:E4;C:G7;D:FN;E:FK;F:EF;aE1bD3cB7dAHe9Ff90g8Gh82i7Rj6Tk5Zl4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7DeHol1TvG;et7onB8;le0sen3;an9endBMhiB3iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9WenG0;kCYtor3;da,l8Unus,rG;a,nGoniD1;a,iDB;leGnesEB;nDKrG;i1y;aSePhNiMoJrGu6y4;acG2iGu0E;c3na,sG;h9Lta;nHrG;a,i;i9Iya;a5HffaCFna,s5;al3eGomasi0;a,l8Fo6Wres1;g7To6VrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmC9ra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFIlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF7r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh74;dy;aKeGirlBKo0y6;ba,e0i6lIrG;iGrBOyl;!d6Z;ia,lBU;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Xre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBMome;e,ie;in1ri0;a02eXhViToHuG;by,thBJ;bQcPlOnNsHwe0xG;an93ie,y;aHeGie,lC;ann8ll1marBEtB;!lGnn1;iGyn;e,nG;a,d7V;da,i,na;an9;hel52io;bin,erByn;a,cGkki,na,ta;helBYki;ea,iannDWoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cAQkaE;chGe,i0mo0n5DquCCvDy0;aCBelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAV;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4No6rvaBAtHulG;a,et7in1;ricGsy,tA7;a,e,ia;ctav3deHfAVlGphAV;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB1k8AolG;a,eBG;!mh;l7Sna,risF;dIi5OnHo22taG;li1s5;cy,et7;eAiCN;a01ckenz2eViLoIrignayani,uriBFyG;a,rG;a,na,tAR;i4ll9WnG;a,iG;ca,ka,qB3;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9IlG;iGy;cent,e;red;!e6;ae6el3F;ag4JgKi,lHrG;edi60isFyl;an2iGliF;nGsAL;a,da;!an,han;b08c9Dd06e,g04i03l01nZrKtJuHv6Rx86yGz2;a,bell,ra;de,rG;a,eD;h74il9t2;a,cSgOiJjor2l6Hn2s5tIyG;!aGbe5PjaAlou;m,n9R;a,ha,i0;!aIbAKeHja,lCna,sGt52;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Jueri7;!t;!ry;et3HiB;elGi60y;a,l1;dGon,ue6;akranBy;iGlo35;a,ka,n9;a,re,s2;daGg2;!l2V;alCd2elGge,isBFon0;eiAin1yn;el,le;a0He07iWoQuKyG;d3la,nG;!a,dHe9RnGsAP;!a,e9Q;a,sAN;aB0cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a29e,l24n9;is,l1FrHtt2uG;el6is1;aIeHi8na,rG;a6Yi8;lei,n1tB;!in1;aPbb82d3lLnIsHv3zG;!a,be4Jet7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Fe;!n4E;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", + "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", "Date": "true¦ago,t0weekend,yesterd2;mr2o0;d0morrow;ay;!w", "FirstName": "true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is", - "LastName": "true¦0:34;1:3B;2:39;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs2;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu1;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow20ut1N;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils2guy5ix2owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nYu3;an6ns2;ss2;ki0Es5;cks2nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs2;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr1;ayli3ub0;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", - "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEern1iBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", + "LastName": "true¦0:35;1:3C;2:3A;3:2Z;4:2F;5:31;a3Cb32c2Pd2Fe2Cf26g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Voshi1Kun;ma6ng;da,guc20mo28sh22zaR;iao,u;a7eb0il6o3right,u;li3Cs2;gn0lk0ng,tanabe;a6ivaldi;ssilj38zqu1;a9h8i2Ho7r6sui,urn0;an,ynisJ;lst0Prr1Vth;at1Vomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2BzuE;a6ein0;l24rm0;sa,u3;rn4th;lva,mmo25ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag20i9o7u6;bio,iz,sD;b6dri1NgIj0Tme25osevelt,ssi,ux,w17;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow21ut1O;as6hl0;so;a6illips;m,n1U;ders5et8r7t6;e0Nr4;ez,ry;ers;h22rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1P;ega,iz;a6eils2guy5ix2owak,ym1F;gy,ka6var1L;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Ne6r0V;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Rr6w0K;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Mo8u7wo6;k,n;mar,znets4;bay6vacs;asZ;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nZu3;an6ns2;ss2;ki0Fs5;cks2nsse0E;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghOynh;a3ffmann,rvat;mingw7nde6rO;rs2;ay;ns5rrRs7y6;asEes;an4hi6;moK;aAil,o9r7u6;o,tierr1;ay6ub0;li3;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", + "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEiBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Y;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", "Person": "true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", "PhrasalVerb": "true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:73;1:7I;2:7O;3:7H;4:7A;5:5B;6:4R;7:49;8:48;9:7F;A:60;a6Eb60c5Md52e4Pf45g3Xh3Mi31j2Zk2Yl2Nm2Cn23o1Np16quack,r0Ws0Ct05uMvJwByear5;arp0eFholeEiDoB;man5oBu67;d69zy;despr6Zs5B;!sa7;eClBste22;co1El o4H;!k5;aCiBola47;b7Nce versa,ol50;ca2gabo5Ynilla;ltSnFpCrb55su4tterB;!mo6U; f30b1KpCsBti1D;ca7et,ide dItairs;er,i3J;aLbeco6Lconvin23deIeHfair,ivers4knGprecedUrEsCwB;iel1Writt5U;i1RuB;pervis0specti3;eBu5;cognHgul6Bl6B;own;ndi3v5Oxpect0;cid0rB;!grou5JsB;iz0tood;b7ppeaHssu6AuthorB;iz0;i20ra;aFeDhough4KoCrB;i1oubl0;geth6p,rp6B;en5LlBm4Vrr2Q;li3;boo,lBn;ent0;aTcSeQhPiNmug,nobbi3AoLpKqueami3AtFuBymb5Y;bDi gener50pBrprisi3;erBre0H;! dup6b,i25;du0seq4P;anda6OeEi0LrBy34;aightBip0; fBfB;or56;adfa5Wreotyp0;a4Uec2Cir1Flend5Wot on; call0le,mb6phist1TrBu0Tvi3X;d5Ury;gnifica2nB;ce4Qg7;am2Le6ocki3ut;cBda1em5lfi2Uni1Spa63re8;o1Cr3R;at53ient24reec53;cr0me,ns serif;aIeEiCoB;bu5Ktt4PuOy4;ghtBv4;!-25fA;ar,bel,condi1du5Xfres4XlDpublic3RsBtard0;is43oB;lu1na2;e1Auc41;b5EciB;al,st;aMeKicayu8lac5Copuli5BrCuB;bl54mp0;eFiCoB;!b06fu5Cmi2Xp6;mCor,sBva1;ti8;a4Re;ci58mB;a0EiB;er,um;ac1WrBti1;fe9ma2Pplexi3v2Z;rBst;allelDtB;-tiBi4;me;!ed;bMffKkJld fashion0nIpHrg1Dth6utGvB;al,erB;!aDniCt,wB;eiBrouB;ght;ll;do0Rer,g2Hsi41;en,posi1; boa5Ag2Fli8;!ay; gua58bBli8;eat;eDsB;cBer0Dole1;e8u3F;d2Ose;ak0eIiHoBua4J;nFrCtB;ab7;thB;!eB;rn;chala2descri4Ustop;ght5;arby,cessa3Sighbor5xt;aJeHiEoBultip7;bi7derClBnth5ot,st;dy;a1n;nBx0;iaBor;tu2Y;di49naBre;ci3;cBgenta,in,jZkeshift,le,mmoth,ny,sculi8;ab2Uho;aKeFiCoBu0Z;uti0Yvi3;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda38;!-08;ngu3Lst,tt6;ap1Oind5no06;agg0uB;niKstifi0veni7;de4gno46lleg4mOnDpso 1RrB;a1releB;va2; JaIbr0corHdFfluenPiPnEsDtB;a9en3GoxB;ic31;a8i2N;a1er,oce2;iCoB;or;re9;deq3Eppr2T;fBsitu,vitro;ro2;mFpB;arDerfe9oBrop6;li1rtB;a2ed;ti4;eBi0M;d2Ln30;aGelFiDoBumdr36;ne2Uok0rrBs03ur5;if2N;ghfalut1KspB;an2L;liVpfA;lEnDrB;d01roB;wi3;dy,gi3;f,low0;ainfAener2Eiga1YlHoGraDuB;ilBng ho;ty;cCtB;efAis;efA;ne,od;ea28ob4;aQeKinJlIoDrB;a1PeBoz1G;e28q0YtfA;oDrB; keeps,eBm6tuna1;g00ign;liB;sh;ag2Uue2;al,i1;dFmCrB;ti7;a7ini8;ne;le; up;bl0i2l20r Cux,voB;ri1uri1;oBreac1A;ff;aJfficie2lImiHnFre9there4veExB;a9cess,pe1JtraCuB;be2Gl0D;!va19;n,ryday; Bcouragi3ti0M;rou1sui1;ne2;abo1YdMe14i1;g6sB;t,ygB;oi3;er;aReJiDoBrea11ue;mina2ne,ubB;le,tfA;dact16fficu1JsCvB;er1F;creDeas0gruntl0hone1AordCtB;a2ress0;er5;et; HadpGfFgene1KliDrang0spe1KtCvoB;ut;ail0ermin0;be1Hca1ghB;tfA;ia2;an;facto;i5magBngeroVs0E;ed,i3;ly;ertaNhief,ivil,oDrB;aBowd0u0D;mp0vYz0;loJmHnCoi3rrBve0K;e9u1D;cre1grEsDtB;emBra0B;po09;ta2;ue2;mer04pleB;te,x;ni4ss4;in;aLeHizarGlFoCrB;and new,isk,okL;gCna fiSttom,urgeoB;is;us;ank,iE;re;autifAhiClov0nBst,yoC;eRt;nd;ul;ckCnkru0SrrB;en;!wards; priori,b0Ic0Fd05fra04g00hZlUma01ntiquTppQrKsIttracti02utheHvEwB;aCkB;wa0P;ke,re;ant garCerB;age;de;ntQ;leep,tonisB;hi3;ab,bitEroDtiB;fiB;ci4;ga2;raB;ry;are2etiLrB;oprB;ia1;at0;arEcohCeBiIl,oof;rt;olB;ic;mi3;ead;ainDgressiConiB;zi3;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda2;e2oCtra9;ct;lu1rbi3;ng;te;pt;aBve;rd;aze,e;ra2;nt", - "Comparable": "true¦0:3Z;1:4G;2:43;3:49;4:3V;5:2W;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou3;aBe9hi1Wi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge4rda2xi3;gue,in,st;g0n6pco3Kse4;like0ti1;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "Adjective": "true¦0:7N;1:82;2:81;3:88;4:7U;5:5R;6:57;7:4N;8:4M;9:7Z;A:6G;B:7L;a6Vb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uNvKwCyear5;arp0eGholeFiEoC;man5oCu6O;d6Qzy;despr7Ks5S;!sa7;eDlCste2A;co1Nl o4W;!k5;aDiCola4M;b88ce versa,ol5H;ca3gabo6Fnilla;ltUnHpDrb5Msu4tterC;!mo7F; f3Ab1SpEsCti1M;ca7etCide dKtairs;!ti2;er,i3U;aMbeco75convin2AdeJeIfair,ivers4knHprecedWrFsDwC;iel3Oritt6A;i1YuC;pervis0spec3Z;eCu5;cognIgul6Tl6T;own;ndi2v64xpect0;cid0rC;!grou5ZsC;iz0tood;b7pp0Essu6UuthorC;iz0;i27ra;aHeFhEi6AoDrC;i1oubl0us3N;geth6p,rp6Vuc67;ough4Xril34;en60l33mpCrr2Y;o6Ati2;boo,lCn;ent0;aXcWeUhTiRmug,nobbi3MoPpOqueami3MtGuCymb6H;bEi gener5EpCrpri6D;erCre0O;! dup6b,i2D;du0seq53;anda77eHiGrCunni2y3G;aightDiC;ki2p0; fCfC;or5K;ll,r5S;aCreotyp0;dfa6Cmi2;a56ec2Hir1Ilend6Cot on; call0le,mb6phist1YrCu0Wvi49;d6Ary;gnifica3nC;ce52g7;am2Se6ocki2ut;cCda1em5lfi33ni1Xpa6Jre8;o1Fr43;at5Gient29reec5G;cr0me;aKeFiDoC;bu60tt51uRy4;ghtCv4;!-2CfA;ar,bel,condi1du6Dfres5AlFpublic43sDtard0vC;ea27;is4DoC;lu1na3;aRe1Duc4B;b5TciCllyi2;al,st;aPeMicayu8lac5Ropuli5QrDuC;bl5Jmp0n51;eHiEoC;!b08fuBmiCp6;ne3si2;mDor,sCva1;ti8;a53e;ciBmC;a0FiC;er,um;ac21rCti1;fe9ma2YpleCv39;xi2;rCst;allelEtC;-tiCi4;me;!ed;bMffKkJld fashion0nIpHrg1Fth6utGvC;al,erC;!all,niDt,wC;eiCrouC;ght;do0Uer,g2Rsi4B;en,posi1; boa5Og2Pli8;!ay; gua5MbCli8;eat;eEsC;cCer0Fole1;e8u3P;d2Yse;aKeJiIoCua4X;nGrDtC;ab7;thC;!eC;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1B;aJeHiEoCultip7;bi7derCl0Wnth5ot,st;a1n;nCx0;dblo0SiaCor;tu38;ande3Qdi4NnaCre;ci2;cCgenta,in,j02keshift,le,mmoth,ny,sculi8;ab34ho;aLeGiDoCu16;uti15vi2;mDteraC;l,te;it0;ftFgCth4;al,eDitiC;ma1;nda3K;!-0D;ngu3Zst,tt6;ap1Yind5no0B;agg0uC;niNstifi0veni7;de4gno4Klleg4mRnFpso 21rC;a1rC;eleCita0K;va3; LaKbr0corJdHfluenRiRnGsFtDviC;go0Gti2;a9enBoxC;ic3B;a8i2Vul0E;a1er,oce3;iDoC;or;re9;deq3Qppr33;fCsitu,vitro;ro3;mGpC;arEerfe9oCrop6;li1rtC;a3ed;ti4;eCi0T;d2VnB;aJeGiEoCumdr3I;ne36ok0rrCs09ur5;if2Z;ghfalut1RspC;an2X;aDlC;liZpfA;li2;lFnErC;d05roC;wi2;dy;f,low0;ainfAener2Oiga24lIoHraEuC;ilCng ho;ty;cDtC;efAis;efA;ne,od;ea2Iob4;aUeOinNlLoGrC;a1VeEoz1MustC;raC;ti2;e2Gq11tfA;oErC; keeps,eCm6tuna1;g04ign;liC;sh;aCue3;g31tte1P;al,i1;dGmDrC;ti7;a7ini8;ne;le; up;bl0i3lBr Dux,voC;ri1uri1;oCreac1E;ff;aMfficie3lLmInGre9there4veFxC;a9cess,pe1QtraDuC;be2Nl0F;!va1E;n,ryday; CcouraFti0P;rou1sui1;erDiC;ne3;gi2;abo23dNe17i1;g6sC;t,ygC;oi2;er;aSeKiEoCrea14ue;mina3ne,ubC;le,tfA;dact1Bfficu1OsDvC;erB;creEeas0gruntl0hone1FordDtC;a3ressN;er5;et; IadpHfGgene1PliErang0spe1PtDvoC;ut;ail0ermin0;be1Mca1ghC;tfA;ia3;an;facto;i5magCngeroVs0G;ed,i2;ly;ertaNhief,ivil,oErC;aCowd0u0G;mp0vZz0;loJmHnDrrCve0P;e9u1I;cre1fu0LgrEsDtC;empo0Dra0E;ta3;ue3;mer08pleC;te,x;ni4ss4;in;aNeJizarIlGoDrC;and new,isk,okN;gDna fiUttom,urgeoC;is;us;ank,indC;!i2;re;autifAhiDlov0nCst,yoD;eUt;nd;ul;ckDnkru0XrrC;en;!wards; priori,b0Nc0Kd0Afra09g05h04lZmXntiquWppTrNsJttracti07utheIvFwC;aDkC;wa0U;ke,re;ant garDerC;age;de;ntV;leep,piEsuEtonC;isC;hi2;ri2;ab,bitFroEtiC;fiC;ci4;ga3;raC;ry;are3etiOrC;oprC;ia1;at0;aKuC;si2;arFcohDeCiJl,oof;rt;olC;ic;mi2;ead;ainEgressiDoniC;zi2;ve;st;id; JeHuGvC;aDerB;se;nc0;ed;lt;pt,qC;ua1;hoc,infinitC;um;cuDtu4u1;al;ra1;erMlLoJruIsDuC;nda3;e3oDtra9;ct;lu1rbi2;ng;te;pt;aCve;rd;aze,e;ra3;nt", + "Comparable": "true¦0:41;1:4I;2:45;3:4B;4:3X;5:2Y;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou3;aBe9hi1Yi7r6;o3y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge4rda2xi3;g9in,st;g0n6pco3Mse4;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", "TextValue": "true¦bOeJfDhundredNmOninAone,qu8s6t0zeroN;enMh3rNw0;e0o;l0ntD;fHve;ir0ousandKree;d,t6;e0ix8;cond,pt1ven7xt1;adr0int0;illionD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en0;!th;illion0;!s,th", "Ordinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", - "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", + "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", "Preposition": "true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er" }; @@ -4304,7 +4304,7 @@ modulus: 'moduli', mosquito: 'mosquitoes', mouse: 'mice', - move: 'moves', + // move: 'moves', nebula: 'nebulae', nucleus: 'nuclei', octopus: 'octopi', @@ -8955,7 +8955,7 @@ [/^[0-9]{1,4}\/[0-9]{1,4}$/, 'Fraction'], //3/2ths //range [/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8 - [/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 + [/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 //with unit [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp //ordinal @@ -9056,7 +9056,7 @@ ], r: [[/.[bdfklmst]ler$/, 'Noun'], [/.[ilk]er$/, 'Comparative'], [/[aeiou][pns]er$/, Sing], [/[^i]fer$/, Inf], [/.[^aeiou][ao]pher$/, Actor]], t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj], [/[aeiou].*ist$/, Adj], [/^[a-z]et$/, Verb]], - s: [[/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks + s: [[/.[^aeiou]ises$/, Pres], [/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks [/.[aeiou]kes$/, Pres], //bakes [/[aeiou][^aeiou]is$/, Sing], [/[a-z]\'s$/, Noun], [/^yes+$/, Exp] //yessss ], @@ -9983,6 +9983,11 @@ that: true, there: true }; + var hereThere = { + here: true, + there: true, + everywhere: true + }; var isPossessive = function isPossessive(term, pool) { // if we already know it @@ -10023,6 +10028,11 @@ if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } + return true; } //rocket's red glare @@ -10118,7 +10128,7 @@ var _05PerfectTense = checkPerfect; - var isRange = /^([0-9]+)[-–—]([0-9]+)$/i; //split '2-4' into '2 to 4' + var isRange = /^([0-9]{1,3})[-–—]([0-9]{1,3})$/i; //split '2-4' into '2 to 4' var checkRange = function checkRange(term) { if (term.tags.PhoneNumber === true) { @@ -10198,6 +10208,11 @@ if (isNumber.test(t.implicit)) { t.tags.Number = true; t.tags.Cardinal = true; + } // if no tag, give it a noun + + + if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; } }); return phrase; @@ -10265,7 +10280,7 @@ m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('#Pronoun').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train m = hasTag(doc, 'Value'); m = m.match('#Value #PresentTense'); @@ -10327,6 +10342,12 @@ match: '#Copula (pretty|dead|full|well) (#Adjective|#Noun)', tag: '#Copula #Adverb #Adjective', reason: 'sometimes-adverb' + }, //i better .. + { + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' }, //walking is cool { match: '[#Gerund] #Adverb? not? #Copula', @@ -10461,8 +10482,26 @@ }]; var _01Misc = list; - //Dates: 'june' or 'may' - var dates = '(april|june|may|jan|august|eve)'; + var _ambig = { + adverbs: { + // adverbs than can be adjectives + adjectives: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'] + }, + person: { + // names that are dates + dates: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that are adjectives + adjectives: ['misty', 'rusty', 'dusty', 'rich', 'randy'], + // names that are verbs + verbs: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + places: ['paris', 'alexandria', 'houston', 'kobe', 'salvador', 'sydney'], + // names that are nouns + nouns: ['art', 'bill', 'charity', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'gene', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet'] + } + }; + + var dates = "(".concat(_ambig.person.dates.join('|'), ")"); var list$1 = [// ==== Holiday ==== { match: '#Holiday (day|eve)', @@ -10652,7 +10691,111 @@ }]; var _02Dates = list$1; - var _03Noun = [// ==== Plural ==== + var adjectives$1 = "(".concat(_ambig.person.adjectives.join('|'), ")"); + var list$2 = [// all fell apart + { + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' + }, // very rusty + { + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' + }, // rusty smith + { + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' + }, // rusty a. smith + { + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' + }, //sometimes not-adverbs + { + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' + }, //jack is guarded + { + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' + }, // smoked poutine is + { + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' + }, // baked onions are + { + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' + }, // is f*ed up + { + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' + }, //jack seems guarded + { + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' + }, // Gerund-Adjectives - 'amusing, annoying' + //a staggering cost + { + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' + }, //as amusing as + { + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' + }, // more amusing than + { + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' + }, // very amusing + { + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' + }, // it was amusing + { + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' + }, // found it amusing + { + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' + }, // a bit amusing + { + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' + }]; + var _03Adjective = list$2; + + var _04Noun = [// ==== Plural ==== //there are reasons { match: 'there (are|were) #Adjective? [#PresentTense]', @@ -10799,6 +10942,12 @@ group: 0, tag: 'Noun', reason: 'the-verb-of' + }, //next career move + { + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' }, //the threat of force { match: '#Determiner #Noun of [#Verb]', @@ -10845,6 +10994,12 @@ group: 0, tag: 'Noun', reason: 'det-past' + }, // this swimming + { + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' }, //air-flow { match: '(#Noun && @hasHyphen) #Verb', @@ -10907,73 +11062,6 @@ reason: 'swears-noun' }]; - var adjectives$1 = '(misty|rusty|dusty|rich|randy)'; - var list$2 = [// all fell apart - { - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' - }, // very rusty - { - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' - }, // rusty smith - { - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' - }, // rusty a. smith - { - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' - }, //sometimes not-adverbs - { - match: '#Copula [(just|alone)]$', - group: 0, - tag: 'Adjective', - reason: 'not-adverb' - }, //jack is guarded - { - match: '#Singular is #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'is-filled' - }, // smoked poutine is - { - match: '[#PastTense] #Singular is', - group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' - }, // baked onions are - { - match: '[#PastTense] #Plural are', - group: 0, - tag: 'Adjective', - reason: 'baked-onions' - }, //a staggering cost - { - match: '(a|an) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a|an' - }, // is f*ed up - { - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' - }, //jack seems guarded - { - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' - }]; - var _04Adjective = list$2; - var _05Adverb = [//still good { match: '[still] #Adjective', @@ -11118,8 +11206,27 @@ reason: 'a-is-one' }]; - var verbs$1 = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'; - var list$3 = [// ==== Tense ==== + var verbs$1 = "(".concat(_ambig.person.verbs.join('|'), ")"); + var list$3 = [// adj -> gerund + // amusing his aunt + { + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Gerund', + reason: 'gerund-his-noun' + }, // loving you + { + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' + }, // slowly stunning + { + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' + }, // ==== Tense ==== //he left { match: '#Noun #Adverb? [left]', @@ -11307,6 +11414,12 @@ group: 0, tag: 'Infinitive', reason: 'open-the' + }, // compromises are possible + { + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' }, // would wade { match: "#Modal [".concat(verbs$1, "]"), @@ -11318,6 +11431,12 @@ group: 0, tag: 'Verb', reason: 'really-mark' + }, //to mark + { + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' }, // wade smith { match: "".concat(verbs$1, " #Person"), @@ -11325,7 +11444,7 @@ reason: 'rob-smith' }, // wade m. Cooper { - match: "".concat(verbs$1, " #Acronym? #ProperNoun"), + match: "".concat(verbs$1, " #Acronym #ProperNoun"), tag: 'Person', reason: 'rob-a-smith' }, // damn them @@ -11347,7 +11466,7 @@ }]; var _07Verbs = list$3; - var places = '(paris|alexandria|houston|kobe|salvador|sydney)'; + var places = "(".concat(_ambig.person.verbs.join('|'), ")"); var list$4 = [// ==== Region ==== //West Norforlk { @@ -11466,7 +11585,7 @@ reason: 'noun-public-school' }]; - var nouns$1 = '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'; + var nouns$1 = "(".concat(_ambig.person.nouns.join('|'), ")"); var months = '(january|april|may|june|jan|sep)'; //summer|autumn var list$5 = [// ==== Honorific ==== @@ -11518,11 +11637,17 @@ tag: 'Person', reason: 'possessive-name' }, { - match: '#Acronym #ProperNoun', + match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', tag: 'Person', - reason: 'acronym-titlecase', + reason: 'titlecase-acronym-titlecase', safe: true }, //ludwig van beethovan + { + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true + }, //jk rowling { match: '#Person (jr|sr|md)', tag: 'Person', @@ -11557,10 +11682,20 @@ safe: true }, //king of spain { - match: '(king|queen|prince|saint|lady) of? #Noun', + match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true + }, //lady Florence + { + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' + }, //saint Foo + { + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' }, //Foo U Ford { match: '[#ProperNoun] #Person', @@ -11634,23 +11769,21 @@ tag: 'Person', reason: 'infinitive-person' }, // may waits for - { - match: "[".concat(months, "] #PresentTense for"), - group: 0, - tag: 'Person', - reason: 'ambig-active-for' - }, // may waits to - { - match: "[".concat(months, "] #PresentTense to"), - group: 0, - tag: 'Person', - reason: 'ambig-active-to' - }, // april will + // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, + // may waits to + // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, + // april will { match: "[".concat(months, "] #Modal"), group: 0, tag: 'Person', reason: 'ambig-modal' + }, // may be + { + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' }, // would april { match: "#Modal [".concat(months, "]"), @@ -11756,17 +11889,45 @@ }]; var _10People = list$5; + var adjectives$2 = "(".concat(_ambig.adverbs.adjectives.join('|'), ")"); + var list$6 = [// a bit cold + { + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' + }, // dark green + { + match: "[".concat(adjectives$2, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' + }, // kinda sparkly + { + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' + }, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' + }]; + var _11Adverbs = list$6; + var matches = []; matches = matches.concat(_01Misc); matches = matches.concat(_02Dates); - matches = matches.concat(_03Noun); - matches = matches.concat(_04Adjective); + matches = matches.concat(_03Adjective); + matches = matches.concat(_04Noun); matches = matches.concat(_05Adverb); matches = matches.concat(_06Value); matches = matches.concat(_07Verbs); matches = matches.concat(_08Place); matches = matches.concat(_09Org); - matches = matches.concat(_10People); // cache the easier conditions up-front + matches = matches.concat(_10People); + matches = matches.concat(_11Adverbs); // cache the easier conditions up-front var cacheRequired$1 = function cacheRequired(reg) { var needTags = []; @@ -12054,6 +12215,7 @@ var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... .notIf('@hasComma . .? (and|or) .') //cool, and fun .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' .notIf('@hasComma (too|also)$') //at end of sentence .match('@hasComma'); @@ -12636,20 +12798,31 @@ Object.assign(Nouns.prototype, methods_1); Doc.prototype.nouns = function (n) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas var m = this.not(keep).splitAfter('@hasComma'); // combine them back together - m = m.concat(keep); + m = m.concat(keep); // don't combine over scare-quotes + + var quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + + m = m.not('(my|our|your|their|her|his)'); + } - m = m.not('(my|our|your|their|her|his)'); m = m.not('(of|for|by|the)$'); if (typeof n === 'number') { @@ -12919,7 +13092,7 @@ // verb.debug() //1. if it's already infinitive - var str = verb.text('normal'); + var str = verb.text('reduced'); if (verb.has('#Infinitive')) { return str; @@ -13062,7 +13235,25 @@ var toNegative_1 = toNegative; - // turn 'would not really walk up' into parts + // who/what is doing this verb? + // get the prior verb most-likely doing this action + // (it can not-exist - 'close the door') + var getSubject = function getSubject(vb) { + var behind = vb.lookBehind(); + var lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } + + return lastNoun; + }; + + var getSubject_1 = getSubject; + var parseVerb = function parseVerb(vb) { var parsed = { adverb: vb.match('#Adverb+'), @@ -13073,7 +13264,9 @@ // 'will' of 'will go' particle: vb.match('#Particle'), // 'up' of 'pull up' - verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)') + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject_1(vb) }; // fallback, if no verb found if (!parsed.verb.found) { @@ -13180,7 +13373,18 @@ if (verb.has('#Modal')) { return doModal_1(parsed); - } + } // dont conjugate imperative form - 'close the door' + // if (parsed.auxiliary.has('do')) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + var hasHyphen = parsed.verb.termList(0).hasHyphen(); var infinitive = toInfinitive_1$1(parsed, world); @@ -13237,6 +13441,40 @@ var conjugate_1$1 = conjugate$2; + // verb-phrases that are orders - 'close the door' + // these should not be conjugated + var isImperative = function isImperative(parsed) { + // do the dishes + if (parsed.auxiliary.has('do')) { + return true; + } // speak the truth + // if (parsed.verb.has('^#Infinitive')) { + // // 'i speak' is not imperative + // if (parsed.subject.has('(i|we|you|they)')) { + // return false + // } + // return true + // } + + + return false; + }; // // basically, don't conjugate it + // exports.toImperative = function (parsed) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + + + var imperative = { + isImperative: isImperative + }; + // if something is 'modal-ish' we are forced to use past-participle // ('i could drove' is wrong) @@ -13299,6 +13537,7 @@ toParticiple: toParticiple }; + var isImperative$1 = imperative.isImperative; var _toParticiple = participle.toParticiple, useParticiple$1 = participle.useParticiple; // remove any tense-information in auxiliary verbs @@ -13443,6 +13682,21 @@ return; } + if (isImperative$1(parsed)) { + return; + } // don't conjugate 'to be' + + + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' + + + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } + var str = conjugate_1$1(parsed, _this5.world).PastTense; if (str) { @@ -13602,6 +13856,19 @@ } return this.remove('#Negative'); + }, + + /** who, or what is doing this action? */ + subject: function subject() { + var list = []; + this.forEach(function (p) { + var found = getSubject_1(p); + + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); } }; @@ -13635,7 +13902,14 @@ var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas - var m = match.not(keep).splitAfter('@hasComma'); // // combine them back together + var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + + var gerund = m.match('#PastTense #Gerund'); + + if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + m = m.splitBefore(gerund.match('#Gerund')); + } // combine them back together + m = m.concat(keep); m.sort('index'); //handle slashes? diff --git a/builds/compromise.min.js b/builds/compromise.min.js index abd9a6bfb..f24f9eec8 100644 --- a/builds/compromise.min.js +++ b/builds/compromise.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);rn[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},J={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},J,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.normal),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},K=Object.assign({},N,F,V,S,q);function R(){return"undefined"!=typeof window&&window.document}var W=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=j(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=d(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=j(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();ie.prototype.clone=function(){var e=new ie(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(ie.prototype,K),Object.assign(ie.prototype,ae);var oe=ie,se={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===e?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=ue(i)),!0===e.trim&&(i=i.trim()),i}},ce={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},he=/[.?!]\s*$/,de=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,he.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();de(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},ge=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===ge.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},me=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},ve={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return me(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,me(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},be={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},ye={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},we=Object.assign({},se,le,ce,ve,be,ye),ke=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},Ae=function(e,t,r,n,a,i){for(var o=t;to)return[!1,null];if(!0===u.end&&r+o!==n)return[!1,null]}if(l){var g=Pe(a,c,e,p,u.named);o>1&&u.greedy?g.length+=o-p:g.length++}}else if(!0!==u.optional){if(!(e[o].isImplicit()&&t[s-1]&&e[o+1]&&e[o+1].doesMatch(u,r+o,n)))return[!1,null];o+=2}}else{var f=$e(e,o,t[s+1],u,r);if(void 0!==u.min&&f-ou.max){o+=u.max;continue}if(null===f)return[!1,null];l&&(Pe(a,c,e,o,u.named).length=f-o),o=f}}return[e.slice(0,o),a]},Ge=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},xe=/\{([0-9]+,?[0-9]*)\}/,Ce=/&&/,De=new RegExp(/^<(\S+)>/),je=function(e){return e[e.length-1]},Ee=function(e){return e[0]},Ne=function(e){return e.substr(1)},Fe=function(e){return e.substr(0,e.length-1)},Oe=function(e){return e=Ne(e),e=Fe(e)},Te=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===je(t)&&(n.end=!0,t=Fe(t)),"^"===Ee(t)&&(n.start=!0,t=Ne(t)),("["===Ee(t)||"]"===je(t))&&(n.named=!0,"["===Ee(t)?n.groupType="]"===je(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===Ee(t))){var i=De.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===je(t)&&(n.greedy=!0,t=Fe(t)),"*"!==t&&"*"===je(t)&&"\\*"!==t&&(n.greedy=!0,t=Fe(t)),"?"===je(t)&&(n.optional=!0,t=Fe(t)),"!"===Ee(t)&&(n.negative=!0,t=Ne(t)),"("===Ee(t)&&")"===je(t)){Ce.test(t)?(n.choices=t.split(Ce),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ne(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Fe(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map(e),t=""}if("/"===Ee(t)&&"/"===je(t))return t=Oe(t),n.regex=new RegExp(t),n;if("~"===Ee(t)&&"~"===je(t))return t=Oe(t),n.soft=!0,n.word=t,n}return!0===xe.test(t)&&(t=t.replace(xe,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,""}))),"#"===Ee(t)?(n.tag=Ne(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Ee(t)?(n.method=Ne(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},ze=function(e){return e.filter((function(e){return e.groupType})).length>0&&(e=function(e){for(var t,r,n=!1,a=-1,i=0;i)?\(.*?\)[?+*]*\]?\$?)/);return t.map((function(e){return e.trim()}))}(t);return r=(r=function(e){var t=[];return e.forEach((function(e){if(/^[[^_/]?\(/.test(e[0]))t.push(e);else{var r=e.split(" ");r=r.filter((function(e){return e})),t=t.concat(r)}})),t}(r)).map(Te),r=ze(r)},Ve=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=He(t)),!0===ke(e,t))return[];var n=t.filter((function(e){return!0!==e.optional})).length,a=e.terms(),i=[];if(!0===t[0].start){var o=Be(a,t,0,a.length),s=l(o,2),u=s[0],c=s[1];return!1!==u&&u.length>0&&(u=u.filter((function(e){return e})),i.push({match:u,groups:c})),Ge(a,t,i)}for(var h=0;ha.length);h+=1){var d=Be(a.slice(h),t,h,a.length),p=l(d,2),g=p[0],f=p[1];if(!1!==g&&g.length>0&&(h+=g.length-1,g=g.filter((function(e){return e})),i.push({match:g,groups:f}),!0===r))return Ge(a,t,i)}return Ge(a,t,i)},Ie=function(e,t){var r={};Ve(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Me={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Ve(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Ve(this,e,!0).length>0},not:function(e){var t=this,r=Ie(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Se=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Se.prototype.buildFrom=function(e,t,r){var n=new Se(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Se.prototype,Me),Object.assign(Se.prototype,we);var Le={term:"terms"};Object.keys(Le).forEach((function(e){return Se.prototype[e]=Se.prototype[Le[e]]}));var _e=Se,Je=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();Je.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new Je(t)};for(var qe=Je,Ke=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},Re=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,We=/\S/,Ue=/[ .][A-Z]\.? *$/i,Qe=/(?:\u2026|\.{2,}) *$/,Ze=/((?:\r?\n|\r)+)/,Xe=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Ye=/^\s+/,et=function(e,t){if(!0===Ue.test(e))return!1;if(!0===Qe.test(e))return!1;if(!1===Xe.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},tt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===We.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(Ze),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):ct(e)&&(n=e)),n=(n=n||tt(e,t)).map((function(e){return lt(e)})),r=r||new qe;var a=n.map((function(e){e=e.map((function(e){var t=new oe(e);return r.add(t),t})),Ke(e);var t=new _e(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},dt=function(e,t){var r=new qe;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new oe(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return Ke(a),new _e(a[0].id,a.length,r)}))},pt={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,lest,unless",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:0Z;1:12;a0Yb0Mc0Dd06e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Ts 2;doll0Fst0H; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Y;ep3ri1u2;de0Rff;faOmoO;st0Nze;al0i1o2;om,se;a4i0Kl06r3u2;dMrpoE;erogaWobl0P;rt,te0J;bjTceHthers;othi1umb0F;a4ee05o2;del,m2nopo0th0D;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",Honorific:"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al",SportsTeam:"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",Uncountable:"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics",Infinitive:"true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHuG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on",Unit:"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",Organization:"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c",Demonym:"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",Currency:"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s",City:"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg",Abbreviation:"true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,p,rd,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,t,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v",Country:"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an",Region:"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma",FemaleName:"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:FS;6:ER;7:EP;8:GF;9:EZ;A:GB;B:E5;C:G8;D:FO;E:FL;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et7onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s5;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmCAra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lC;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaE;chGe,i0mo0n5EquCDvDy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et7in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s5;cy,et7;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eD;h75il9t2;a,cSgOiJjor2l6In2s5tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lCna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri7;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alCd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah",Place:"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s",WeekDay:"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",Date:"true¦ago,t0weekend,yesterd2;mr2o0;d0morrow;ay;!w",FirstName:"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is",LastName:"true¦0:34;1:3B;2:39;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs2;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu1;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow20ut1N;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils2guy5ix2owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nYu3;an6ns2;ss2;ki0Es5;cks2nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs2;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr1;ayli3ub0;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams",MaleName:"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEern1iBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on",Person:"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld",Adjective:"true¦0:73;1:7I;2:7O;3:7H;4:7A;5:5B;6:4R;7:49;8:48;9:7F;A:60;a6Eb60c5Md52e4Pf45g3Xh3Mi31j2Zk2Yl2Nm2Cn23o1Np16quack,r0Ws0Ct05uMvJwByear5;arp0eFholeEiDoB;man5oBu67;d69zy;despr6Zs5B;!sa7;eClBste22;co1El o4H;!k5;aCiBola47;b7Nce versa,ol50;ca2gabo5Ynilla;ltSnFpCrb55su4tterB;!mo6U; f30b1KpCsBti1D;ca7et,ide dItairs;er,i3J;aLbeco6Lconvin23deIeHfair,ivers4knGprecedUrEsCwB;iel1Writt5U;i1RuB;pervis0specti3;eBu5;cognHgul6Bl6B;own;ndi3v5Oxpect0;cid0rB;!grou5JsB;iz0tood;b7ppeaHssu6AuthorB;iz0;i20ra;aFeDhough4KoCrB;i1oubl0;geth6p,rp6B;en5LlBm4Vrr2Q;li3;boo,lBn;ent0;aTcSeQhPiNmug,nobbi3AoLpKqueami3AtFuBymb5Y;bDi gener50pBrprisi3;erBre0H;! dup6b,i25;du0seq4P;anda6OeEi0LrBy34;aightBip0; fBfB;or56;adfa5Wreotyp0;a4Uec2Cir1Flend5Wot on; call0le,mb6phist1TrBu0Tvi3X;d5Ury;gnifica2nB;ce4Qg7;am2Le6ocki3ut;cBda1em5lfi2Uni1Spa63re8;o1Cr3R;at53ient24reec53;cr0me,ns serif;aIeEiCoB;bu5Ktt4PuOy4;ghtBv4;!-25fA;ar,bel,condi1du5Xfres4XlDpublic3RsBtard0;is43oB;lu1na2;e1Auc41;b5EciB;al,st;aMeKicayu8lac5Copuli5BrCuB;bl54mp0;eFiCoB;!b06fu5Cmi2Xp6;mCor,sBva1;ti8;a4Re;ci58mB;a0EiB;er,um;ac1WrBti1;fe9ma2Pplexi3v2Z;rBst;allelDtB;-tiBi4;me;!ed;bMffKkJld fashion0nIpHrg1Dth6utGvB;al,erB;!aDniCt,wB;eiBrouB;ght;ll;do0Rer,g2Hsi41;en,posi1; boa5Ag2Fli8;!ay; gua58bBli8;eat;eDsB;cBer0Dole1;e8u3F;d2Ose;ak0eIiHoBua4J;nFrCtB;ab7;thB;!eB;rn;chala2descri4Ustop;ght5;arby,cessa3Sighbor5xt;aJeHiEoBultip7;bi7derClBnth5ot,st;dy;a1n;nBx0;iaBor;tu2Y;di49naBre;ci3;cBgenta,in,jZkeshift,le,mmoth,ny,sculi8;ab2Uho;aKeFiCoBu0Z;uti0Yvi3;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda38;!-08;ngu3Lst,tt6;ap1Oind5no06;agg0uB;niKstifi0veni7;de4gno46lleg4mOnDpso 1RrB;a1releB;va2; JaIbr0corHdFfluenPiPnEsDtB;a9en3GoxB;ic31;a8i2N;a1er,oce2;iCoB;or;re9;deq3Eppr2T;fBsitu,vitro;ro2;mFpB;arDerfe9oBrop6;li1rtB;a2ed;ti4;eBi0M;d2Ln30;aGelFiDoBumdr36;ne2Uok0rrBs03ur5;if2N;ghfalut1KspB;an2L;liVpfA;lEnDrB;d01roB;wi3;dy,gi3;f,low0;ainfAener2Eiga1YlHoGraDuB;ilBng ho;ty;cCtB;efAis;efA;ne,od;ea28ob4;aQeKinJlIoDrB;a1PeBoz1G;e28q0YtfA;oDrB; keeps,eBm6tuna1;g00ign;liB;sh;ag2Uue2;al,i1;dFmCrB;ti7;a7ini8;ne;le; up;bl0i2l20r Cux,voB;ri1uri1;oBreac1A;ff;aJfficie2lImiHnFre9there4veExB;a9cess,pe1JtraCuB;be2Gl0D;!va19;n,ryday; Bcouragi3ti0M;rou1sui1;ne2;abo1YdMe14i1;g6sB;t,ygB;oi3;er;aReJiDoBrea11ue;mina2ne,ubB;le,tfA;dact16fficu1JsCvB;er1F;creDeas0gruntl0hone1AordCtB;a2ress0;er5;et; HadpGfFgene1KliDrang0spe1KtCvoB;ut;ail0ermin0;be1Hca1ghB;tfA;ia2;an;facto;i5magBngeroVs0E;ed,i3;ly;ertaNhief,ivil,oDrB;aBowd0u0D;mp0vYz0;loJmHnCoi3rrBve0K;e9u1D;cre1grEsDtB;emBra0B;po09;ta2;ue2;mer04pleB;te,x;ni4ss4;in;aLeHizarGlFoCrB;and new,isk,okL;gCna fiSttom,urgeoB;is;us;ank,iE;re;autifAhiClov0nBst,yoC;eRt;nd;ul;ckCnkru0SrrB;en;!wards; priori,b0Ic0Fd05fra04g00hZlUma01ntiquTppQrKsIttracti02utheHvEwB;aCkB;wa0P;ke,re;ant garCerB;age;de;ntQ;leep,tonisB;hi3;ab,bitEroDtiB;fiB;ci4;ga2;raB;ry;are2etiLrB;oprB;ia1;at0;arEcohCeBiIl,oof;rt;olB;ic;mi3;ead;ainDgressiConiB;zi3;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda2;e2oCtra9;ct;lu1rbi3;ng;te;pt;aBve;rd;aze,e;ra2;nt",Comparable:"true¦0:3Z;1:4G;2:43;3:49;4:3V;5:2W;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou3;aBe9hi1Wi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge4rda2xi3;gue,in,st;g0n6pco3Kse4;like0ti1;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd",TextValue:"true¦bOeJfDhundredNmOninAone,qu8s6t0zeroN;enMh3rNw0;e0o;l0ntD;fHve;ir0ousandKree;d,t6;e0ix8;cond,pt1ven7xt1;adr0int0;illionD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en0;!th;illion0;!s,th",Ordinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s",Expression:"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la",Adverb:"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Preposition:"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Determiner:"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er"},gt=["Person","Place","Organization"],ft={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:gt},Actor:{isA:"Noun",notA:gt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:gt},Demonym:{isA:["Noun","ProperNoun"],notA:gt},Possessive:{isA:"Noun"}},mt={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},vt={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},bt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],yt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Time:{isA:["Date"],notA:["Value"]},Determiner:{notA:bt},Conjunction:{notA:bt},Preposition:{notA:bt},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},wt={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},kt=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:wt[t]?e[t].color=wt[t]:e[t].isA.some((function(r){return!!wt[r]&&(e[t].color=wt[r],!0)}))})),e},At=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},Et=function(e,t,r){var n=jt(t);return n1&&(r.hasCompound[i[0]]=!0),"Singular"===t){var o=a.toPlural(e,r);n[o]=n[o]||"Plural"}if("Infinitive"===t)for(var s=a.conjugate(e,r),u=Object.keys(s),l=0;l0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===qt.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},Wt(e),r)).Gerund&&(r.Gerund=Qt.Gerund(e)),void 0===r.PastTense&&(r.PastTense=Qt.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=Qt.PresentTense(e)),r},Xt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],Yt=[/ary$/],er={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},tr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],rr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],nr=[/ary$/,/ous$/],ar={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},ir=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],or={toSuperlative:function(e){if(er.hasOwnProperty(e))return er[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=cr(e);return null!==n?n:lr.test(e)?e+"es":e+"s"},dr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],pr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Cr={tag:function(e,t){return e?(xr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(xr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Dr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},jr=function(e){return e.split(/[ -]/g)},Er=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=jr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Or(o)),i=ht(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},zr=E((function(e,t){var r=function(e,t){var r=ht(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(r){var n=ht(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.append(n,t)})),this):r(e,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(r){var n=ht(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.prepend(n,t)})),this):r(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Ir(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),Sr=E((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};Jr.alphabetical=Jr.alpha,Jr.wordcount=Jr.wordCount;var qr={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},Kr={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):qr.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===hn.test(i)){var s=i.replace(hn,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},gn=/[\'‘’‛‵′`´]$/,fn=/^(m|k|cm|km|m)\/(s|h|hr)$/,mn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}$/,"Fraction"],[/^[0-9.]{1,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/,"NumberRange"],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],vn=/^[IVXLCDM]{2,}$/,bn=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,yn="Adjective",wn="Infinitive",kn="PresentTense",An="Singular",$n="PastTense",Pn="Adverb",Bn="Expression",Gn="Actor",xn="Verb",Cn="Noun",Dn="LastName",jn={a:[[/.[aeiou]na$/,Cn],[/.[oau][wvl]ska$/,Dn],[/.[^aeiou]ica$/,An],[/^([hyj]a)+$/,Bn]],c:[[/.[^aeiou]ic$/,yn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,$n],[/.[aeo]{2}[bdgmnprvz]ed$/,$n],[/.[aeiou][sg]hed$/,$n],[/.[aeiou]red$/,$n],[/.[aeiou]r?ried$/,$n],[/.[bcdgtr]led$/,$n],[/.[aoui]f?led$/,$n],[/.[iao]sed$/,$n],[/[aeiou]n?[cs]ed$/,$n],[/[aeiou][rl]?[mnf]ed$/,$n],[/[aeiou][ns]?c?ked$/,$n],[/[aeiou][nl]?ged$/,$n],[/.[tdbwxz]ed$/,$n],[/[^aeiou][aeiou][tvx]ed$/,$n],[/.[cdlmnprstv]ied$/,$n],[/[^aeiou]ard$/,An],[/[aeiou][^aeiou]id$/,yn],[/.[vrl]id$/,yn]],e:[[/.[lnr]ize$/,wn],[/.[^aeiou]ise$/,wn],[/.[aeiou]te$/,wn],[/.[^aeiou][ai]ble$/,yn],[/.[^aeiou]eable$/,yn],[/.[ts]ive$/,yn]],h:[[/.[^aeiouf]ish$/,yn],[/.v[iy]ch$/,Dn],[/^ug?h+$/,Bn],[/^uh[ -]?oh$/,Bn]],i:[[/.[oau][wvl]ski$/,Dn]],k:[[/^(k){2}$/,Bn]],l:[[/.[gl]ial$/,yn],[/.[^aeiou]ful$/,yn],[/.[nrtumcd]al$/,yn],[/.[^aeiou][ei]al$/,yn]],m:[[/.[^aeiou]ium$/,An],[/[^aeiou]ism$/,An],[/^h*u*m+$/,Bn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,yn],[/[^aeiou]ician$/,Gn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Bn],[/^(yo)+$/,Bn],[/^woo+[pt]?$/,Bn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/.[ilk]er$/,"Comparative"],[/[aeiou][pns]er$/,An],[/[^i]fer$/,wn],[/.[^aeiou][ao]pher$/,Gn]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,yn],[/[aeiou].*ist$/,yn],[/^[a-z]et$/,xn]],s:[[/.[rln]ates$/,kn],[/.[^z]ens$/,xn],[/.[lstrn]us$/,An],[/.[aeiou]sks$/,kn],[/.[aeiou]kes$/,kn],[/[aeiou][^aeiou]is$/,An],[/[a-z]\'s$/,Cn],[/^yes+$/,Bn]],v:[[/.[^aeiou][ai][kln]ov$/,Dn]],y:[[/.[cts]hy$/,yn],[/.[st]ty$/,yn],[/.[gk]y$/,yn],[/.[tnl]ary$/,yn],[/.[oe]ry$/,An],[/[rdntkbhs]ly$/,Pn],[/...lly$/,Pn],[/[bszmp]{2}y$/,yn],[/.(gg|bb|zz)ly$/,yn],[/.[aeiou]my$/,yn],[/[ea]{2}zy$/,yn],[/.[^aeiou]ity$/,An]]},En="Adjective",Nn="Infinitive",Fn="PresentTense",On="Singular",Tn="PastTense",zn="Adverb",Hn="Plural",Vn="Actor",In="Verb",Mn="Noun",Sn="LastName",Ln="Modal",_n=[null,null,{ea:On,ia:Mn,ic:En,ly:zn,"'n":In,"'t":In},{oed:Tn,ued:Tn,xed:Tn," so":zn,"'ll":Ln,"'re":"Copula",azy:En,end:In,ped:Tn,ffy:En,ify:Nn,ing:"Gerund",ize:Nn,lar:En,mum:En,nes:Fn,nny:En,oid:En,ous:En,que:En,rmy:En,rol:On,sis:On,zes:Fn},{amed:Tn,aped:Tn,ched:Tn,lked:Tn,nded:Tn,cted:Tn,dged:Tn,akis:Sn,cede:Nn,chuk:Sn,czyk:Sn,ects:Fn,ends:In,enko:Sn,ette:On,fies:Fn,fore:zn,gate:Nn,gone:En,ices:Hn,ints:Hn,ines:Hn,ions:Hn,less:zn,llen:En,made:En,nsen:Sn,oses:Fn,ould:Ln,some:En,sson:Sn,tage:Nn,teen:"Value",tion:On,tive:En,tors:Mn,vice:On},{tized:Tn,urned:Tn,eased:Tn,ances:Hn,bound:En,ettes:Hn,fully:zn,ishes:Fn,ities:Hn,marek:Sn,nssen:Sn,ology:Mn,ports:Hn,rough:En,tches:Fn,tieth:"Ordinal",tures:Hn,wards:zn,where:zn},{auskas:Sn,keeper:Vn,logist:Vn,teenth:"Value"},{opoulos:Sn,borough:"Place",sdottir:Sn}],Jn={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}fn.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&vn.test(r)&&bn.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===_n[i.length].hasOwnProperty(i)){var o=_n[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===jn.hasOwnProperty(n))for(var a=jn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(qn)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),Jn.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},Rn=function(e,t){var r=e.world;Kn.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},aa={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ia=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],oa=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],sa=[/i$/,/ae$/],ua=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ia.find((function(t){return e.tags[t]})))return;if(aa.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(aa.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(oa.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(sa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},la=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),ca=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},ha=/^[A-Z]('s|,)?$/,da=/([A-Z]\.){2}[A-Z]?/i,pa={I:!0,A:!0},ga={neighbours:Zn,case:ea,stem:na,plural:ua,organizations:function(e,t){for(var r=0;r0?ei=ei.concat(t):ei.push(e)})),ei.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:Ma(r),words:Ma(n)}),e}));var ti=ei,ri=function(e){ti.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=Ma(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},li=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return ai(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();Ji.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new Ji(e,this,this.world)},Ji.prototype.fromText=function(e){var t=ht(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(Ji.prototype,_i.misc),Object.assign(Ji.prototype,_i.selections),Li(Ji);var qi={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(qi).forEach((function(e){return Ji.prototype[e]=Ji.prototype[qi[e]]}));var Ki=Ji,Ri=function(e){var t=e.termList();return pn(t,e.world),e};return function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=ht(e,r),a=new Ki(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=ht(e,n),i=new Ki(a,null,n);return t&&Ri(i),i},n.extend=function(e){return e(Ki,r,this,_e,oe,qe),this},n.fromJSON=function(e){var t=dt(e,r);return new Ki(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e){return He(e)},n.version="13.5.0",n.import=n.load,n}(new Ar)})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);rn[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},q={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},J={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},q,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.normal),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=L(this,t)[0]),r}},K=Object.assign({},N,F,H,S,J);function R(){return"undefined"!=typeof window&&window.document}var W=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=B(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=d(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=B(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();ie.prototype.clone=function(){var e=new ie(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(ie.prototype,K),Object.assign(ie.prototype,ae);var oe=ie,se={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===e?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=ue(i)),!0===e.trim&&(i=i.trim()),i}},ce={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},he=/[.?!]\s*$/,de=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,he.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();de(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},ge=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===ge.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},me=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},ve={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return me(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,me(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},be={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},ye={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},we=Object.assign({},se,le,ce,ve,be,ye),ke=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},Ae=function(e,t,r,n,a,i){for(var o=t;to)return[!1,null];if(!0===u.end&&r+o!==n)return[!1,null]}if(l){var g=Pe(a,c,e,p,u.named);o>1&&u.greedy?g.length+=o-p:g.length++}}else if(!0!==u.optional){if(!(e[o].isImplicit()&&t[s-1]&&e[o+1]&&e[o+1].doesMatch(u,r+o,n)))return[!1,null];o+=2}}else{var f=$e(e,o,t[s+1],u,r);if(void 0!==u.min&&f-ou.max){o+=u.max;continue}if(null===f)return[!1,null];l&&(Pe(a,c,e,o,u.named).length=f-o),o=f}}return[e.slice(0,o),a]},Ce=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},xe=/\{([0-9]+,?[0-9]*)\}/,De=/&&/,je=new RegExp(/^<(\S+)>/),Be=function(e){return e[e.length-1]},Ee=function(e){return e[0]},Ne=function(e){return e.substr(1)},Fe=function(e){return e.substr(0,e.length-1)},Oe=function(e){return e=Ne(e),e=Fe(e)},Ve=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Be(t)&&(n.end=!0,t=Fe(t)),"^"===Ee(t)&&(n.start=!0,t=Ne(t)),("["===Ee(t)||"]"===Be(t))&&(n.named=!0,"["===Ee(t)?n.groupType="]"===Be(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===Ee(t))){var i=je.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Be(t)&&(n.greedy=!0,t=Fe(t)),"*"!==t&&"*"===Be(t)&&"\\*"!==t&&(n.greedy=!0,t=Fe(t)),"?"===Be(t)&&(n.optional=!0,t=Fe(t)),"!"===Ee(t)&&(n.negative=!0,t=Ne(t)),"("===Ee(t)&&")"===Be(t)){De.test(t)?(n.choices=t.split(De),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ne(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Fe(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map(e),t=""}if("/"===Ee(t)&&"/"===Be(t))return t=Oe(t),n.regex=new RegExp(t),n;if("~"===Ee(t)&&"~"===Be(t))return t=Oe(t),n.soft=!0,n.word=t,n}return!0===xe.test(t)&&(t=t.replace(xe,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,""}))),"#"===Ee(t)?(n.tag=Ne(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===Ee(t)?(n.method=Ne(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Te=function(e){return e.filter((function(e){return e.groupType})).length>0&&(e=function(e){for(var t,r,n=!1,a=-1,i=0;i)?\(.*?\)[?+*]*\]?\$?)/);return t.map((function(e){return e.trim()}))}(t);return r=(r=function(e){var t=[];return e.forEach((function(e){if(/^[[^_/]?\(/.test(e[0]))t.push(e);else{var r=e.split(" ");r=r.filter((function(e){return e})),t=t.concat(r)}})),t}(r)).map(Ve),r=Te(r)},He=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=ze(t)),!0===ke(e,t))return[];var n=t.filter((function(e){return!0!==e.optional})).length,a=e.terms(),i=[];if(!0===t[0].start){var o=Ge(a,t,0,a.length),s=l(o,2),u=s[0],c=s[1];return!1!==u&&u.length>0&&(u=u.filter((function(e){return e})),i.push({match:u,groups:c})),Ce(a,t,i)}for(var h=0;ha.length);h+=1){var d=Ge(a.slice(h),t,h,a.length),p=l(d,2),g=p[0],f=p[1];if(!1!==g&&g.length>0&&(h+=g.length-1,g=g.filter((function(e){return e})),i.push({match:g,groups:f}),!0===r))return Ce(a,t,i)}return Ce(a,t,i)},Ie=function(e,t){var r={};He(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Me={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=He(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return He(this,e,!0).length>0},not:function(e){var t=this,r=Ie(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Se=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Se.prototype.buildFrom=function(e,t,r){var n=new Se(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Se.prototype,Me),Object.assign(Se.prototype,we);var _e={term:"terms"};Object.keys(_e).forEach((function(e){return Se.prototype[e]=Se.prototype[_e[e]]}));var Le=Se,qe=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();qe.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new qe(t)};for(var Je=qe,Ke=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},Re=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,We=/\S/,Ue=/[ .][A-Z]\.? *$/i,Qe=/(?:\u2026|\.{2,}) *$/,Ze=/((?:\r?\n|\r)+)/,Xe=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Ye=/^\s+/,et=function(e,t){if(!0===Ue.test(e))return!1;if(!0===Qe.test(e))return!1;if(!1===Xe.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},tt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===We.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(Ze),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):ct(e)&&(n=e)),n=(n=n||tt(e,t)).map((function(e){return lt(e)})),r=r||new Je;var a=n.map((function(e){e=e.map((function(e){var t=new oe(e);return r.add(t),t})),Ke(e);var t=new Le(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},dt=function(e,t){var r=new Je;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new oe(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return Ke(a),new Le(a[0].id,a.length,r)}))},pt={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,lest,unless",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:10;1:13;a0Zb0Nc0Ed07e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Us 2;doll0Gst0I; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Z;ep3ri1u2;de0Sff;faOmoO;st0Oze;al0i1o2;om,se;a4i0Ll07r3u2;dMrpoE;erogaXobl0Q;rt,te0K;bjUceHthers;othi1umb0G;a4ee06o2;del,m2nopo0rni1th0E;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irl00laci05od,rand3u2;l0y; slam,fa2mo2;th02;an;a5ella,ly,ol0r3un2;di1;iUo2;ntiXsO;mi0thW;conomy,gg,ner6ven3x2;ampRecu8;i1t;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",Honorific:"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al",SportsTeam:"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",Uncountable:"true¦0:1F;a1Mb1Ec15d12e0Vf0Pg0Ih0Di09j08knowled1Ll03mVnews,oUpRrMsBt6vi5w1;a3ea06i2oo1;d,l;ldlife,ne;rmth,t0;neg12ol07tae;e4h3oothpaste,r1una;affQou1;ble,sers,t;ermod1Hund0;a,nnis;a9cene05eri0Sh8il7kittl0Snow,o6p4t2u1;g0Vnshi0L;ati1Ge1;am,el;ace19e1;ci0Ned;ap,cc0;k,v0;eep,ingl0K;d08fe13l1nd;m0Wt;a4e2ic1;e,ke0H;c1laxa0Dsearch;ogni0Crea0C;bi0Din;aKe2hys13last6o1ressZ;lit12rk,w0;a0YtrV;bstetr10il,xygen;a6e4ilk,o3u1;mps,s1;ic;nHo0E;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics",Infinitive:"true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on",Unit:"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",Organization:"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c",Demonym:"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",Currency:"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s",City:"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg",Abbreviation:"true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v",Country:"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an",Region:"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma",FemaleName:"true¦0:FX;1:G1;2:FQ;3:FC;4:FB;5:FR;6:EQ;7:EO;8:GE;9:EY;A:GA;B:E4;C:G7;D:FN;E:FK;F:EF;aE1bD3cB7dAHe9Ff90g8Gh82i7Rj6Tk5Zl4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7DeHol1TvG;et7onB8;le0sen3;an9endBMhiB3iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9WenG0;kCYtor3;da,l8Unus,rG;a,nGoniD1;a,iDB;leGnesEB;nDKrG;i1y;aSePhNiMoJrGu6y4;acG2iGu0E;c3na,sG;h9Lta;nHrG;a,i;i9Iya;a5HffaCFna,s5;al3eGomasi0;a,l8Fo6Wres1;g7To6VrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmC9ra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFIlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF7r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh74;dy;aKeGirlBKo0y6;ba,e0i6lIrG;iGrBOyl;!d6Z;ia,lBU;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Xre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBMome;e,ie;in1ri0;a02eXhViToHuG;by,thBJ;bQcPlOnNsHwe0xG;an93ie,y;aHeGie,lC;ann8ll1marBEtB;!lGnn1;iGyn;e,nG;a,d7V;da,i,na;an9;hel52io;bin,erByn;a,cGkki,na,ta;helBYki;ea,iannDWoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cAQkaE;chGe,i0mo0n5DquCCvDy0;aCBelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAV;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4No6rvaBAtHulG;a,et7in1;ricGsy,tA7;a,e,ia;ctav3deHfAVlGphAV;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB1k8AolG;a,eBG;!mh;l7Sna,risF;dIi5OnHo22taG;li1s5;cy,et7;eAiCN;a01ckenz2eViLoIrignayani,uriBFyG;a,rG;a,na,tAR;i4ll9WnG;a,iG;ca,ka,qB3;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9IlG;iGy;cent,e;red;!e6;ae6el3F;ag4JgKi,lHrG;edi60isFyl;an2iGliF;nGsAL;a,da;!an,han;b08c9Dd06e,g04i03l01nZrKtJuHv6Rx86yGz2;a,bell,ra;de,rG;a,eD;h74il9t2;a,cSgOiJjor2l6Hn2s5tIyG;!aGbe5PjaAlou;m,n9R;a,ha,i0;!aIbAKeHja,lCna,sGt52;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Jueri7;!t;!ry;et3HiB;elGi60y;a,l1;dGon,ue6;akranBy;iGlo35;a,ka,n9;a,re,s2;daGg2;!l2V;alCd2elGge,isBFon0;eiAin1yn;el,le;a0He07iWoQuKyG;d3la,nG;!a,dHe9RnGsAP;!a,e9Q;a,sAN;aB0cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a29e,l24n9;is,l1FrHtt2uG;el6is1;aIeHi8na,rG;a6Yi8;lei,n1tB;!in1;aPbb82d3lLnIsHv3zG;!a,be4Jet7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Fe;!n4E;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah",Place:"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s",WeekDay:"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",Date:"true¦ago,t0weekend,yesterd2;mr2o0;d0morrow;ay;!w",FirstName:"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is",LastName:"true¦0:35;1:3C;2:3A;3:2Z;4:2F;5:31;a3Cb32c2Pd2Fe2Cf26g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Voshi1Kun;ma6ng;da,guc20mo28sh22zaR;iao,u;a7eb0il6o3right,u;li3Cs2;gn0lk0ng,tanabe;a6ivaldi;ssilj38zqu1;a9h8i2Ho7r6sui,urn0;an,ynisJ;lst0Prr1Vth;at1Vomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2BzuE;a6ein0;l24rm0;sa,u3;rn4th;lva,mmo25ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag20i9o7u6;bio,iz,sD;b6dri1NgIj0Tme25osevelt,ssi,ux,w17;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow21ut1O;as6hl0;so;a6illips;m,n1U;ders5et8r7t6;e0Nr4;ez,ry;ers;h22rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1P;ega,iz;a6eils2guy5ix2owak,ym1F;gy,ka6var1L;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Ne6r0V;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Rr6w0K;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Mo8u7wo6;k,n;mar,znets4;bay6vacs;asZ;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nZu3;an6ns2;ss2;ki0Fs5;cks2nsse0E;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghOynh;a3ffmann,rvat;mingw7nde6rO;rs2;ay;ns5rrRs7y6;asEes;an4hi6;moK;aAil,o9r7u6;o,tierr1;ay6ub0;li3;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams",MaleName:"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEiBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Y;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on",Person:"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld",Adjective:"true¦0:7N;1:82;2:81;3:88;4:7U;5:5R;6:57;7:4N;8:4M;9:7Z;A:6G;B:7L;a6Vb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uNvKwCyear5;arp0eGholeFiEoC;man5oCu6O;d6Qzy;despr7Ks5S;!sa7;eDlCste2A;co1Nl o4W;!k5;aDiCola4M;b88ce versa,ol5H;ca3gabo6Fnilla;ltUnHpDrb5Msu4tterC;!mo7F; f3Ab1SpEsCti1M;ca7etCide dKtairs;!ti2;er,i3U;aMbeco75convin2AdeJeIfair,ivers4knHprecedWrFsDwC;iel3Oritt6A;i1YuC;pervis0spec3Z;eCu5;cognIgul6Tl6T;own;ndi2v64xpect0;cid0rC;!grou5ZsC;iz0tood;b7pp0Essu6UuthorC;iz0;i27ra;aHeFhEi6AoDrC;i1oubl0us3N;geth6p,rp6Vuc67;ough4Xril34;en60l33mpCrr2Y;o6Ati2;boo,lCn;ent0;aXcWeUhTiRmug,nobbi3MoPpOqueami3MtGuCymb6H;bEi gener5EpCrpri6D;erCre0O;! dup6b,i2D;du0seq53;anda77eHiGrCunni2y3G;aightDiC;ki2p0; fCfC;or5K;ll,r5S;aCreotyp0;dfa6Cmi2;a56ec2Hir1Ilend6Cot on; call0le,mb6phist1YrCu0Wvi49;d6Ary;gnifica3nC;ce52g7;am2Se6ocki2ut;cCda1em5lfi33ni1Xpa6Jre8;o1Fr43;at5Gient29reec5G;cr0me;aKeFiDoC;bu60tt51uRy4;ghtCv4;!-2CfA;ar,bel,condi1du6Dfres5AlFpublic43sDtard0vC;ea27;is4DoC;lu1na3;aRe1Duc4B;b5TciCllyi2;al,st;aPeMicayu8lac5Ropuli5QrDuC;bl5Jmp0n51;eHiEoC;!b08fuBmiCp6;ne3si2;mDor,sCva1;ti8;a53e;ciBmC;a0FiC;er,um;ac21rCti1;fe9ma2YpleCv39;xi2;rCst;allelEtC;-tiCi4;me;!ed;bMffKkJld fashion0nIpHrg1Fth6utGvC;al,erC;!all,niDt,wC;eiCrouC;ght;do0Uer,g2Rsi4B;en,posi1; boa5Og2Pli8;!ay; gua5MbCli8;eat;eEsC;cCer0Fole1;e8u3P;d2Yse;aKeJiIoCua4X;nGrDtC;ab7;thC;!eC;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1B;aJeHiEoCultip7;bi7derCl0Wnth5ot,st;a1n;nCx0;dblo0SiaCor;tu38;ande3Qdi4NnaCre;ci2;cCgenta,in,j02keshift,le,mmoth,ny,sculi8;ab34ho;aLeGiDoCu16;uti15vi2;mDteraC;l,te;it0;ftFgCth4;al,eDitiC;ma1;nda3K;!-0D;ngu3Zst,tt6;ap1Yind5no0B;agg0uC;niNstifi0veni7;de4gno4Klleg4mRnFpso 21rC;a1rC;eleCita0K;va3; LaKbr0corJdHfluenRiRnGsFtDviC;go0Gti2;a9enBoxC;ic3B;a8i2Vul0E;a1er,oce3;iDoC;or;re9;deq3Qppr33;fCsitu,vitro;ro3;mGpC;arEerfe9oCrop6;li1rtC;a3ed;ti4;eCi0T;d2VnB;aJeGiEoCumdr3I;ne36ok0rrCs09ur5;if2Z;ghfalut1RspC;an2X;aDlC;liZpfA;li2;lFnErC;d05roC;wi2;dy;f,low0;ainfAener2Oiga24lIoHraEuC;ilCng ho;ty;cDtC;efAis;efA;ne,od;ea2Iob4;aUeOinNlLoGrC;a1VeEoz1MustC;raC;ti2;e2Gq11tfA;oErC; keeps,eCm6tuna1;g04ign;liC;sh;aCue3;g31tte1P;al,i1;dGmDrC;ti7;a7ini8;ne;le; up;bl0i3lBr Dux,voC;ri1uri1;oCreac1E;ff;aMfficie3lLmInGre9there4veFxC;a9cess,pe1QtraDuC;be2Nl0F;!va1E;n,ryday; CcouraFti0P;rou1sui1;erDiC;ne3;gi2;abo23dNe17i1;g6sC;t,ygC;oi2;er;aSeKiEoCrea14ue;mina3ne,ubC;le,tfA;dact1Bfficu1OsDvC;erB;creEeas0gruntl0hone1FordDtC;a3ressN;er5;et; IadpHfGgene1PliErang0spe1PtDvoC;ut;ail0ermin0;be1Mca1ghC;tfA;ia3;an;facto;i5magCngeroVs0G;ed,i2;ly;ertaNhief,ivil,oErC;aCowd0u0G;mp0vZz0;loJmHnDrrCve0P;e9u1I;cre1fu0LgrEsDtC;empo0Dra0E;ta3;ue3;mer08pleC;te,x;ni4ss4;in;aNeJizarIlGoDrC;and new,isk,okN;gDna fiUttom,urgeoC;is;us;ank,indC;!i2;re;autifAhiDlov0nCst,yoD;eUt;nd;ul;ckDnkru0XrrC;en;!wards; priori,b0Nc0Kd0Afra09g05h04lZmXntiquWppTrNsJttracti07utheIvFwC;aDkC;wa0U;ke,re;ant garDerC;age;de;ntV;leep,piEsuEtonC;isC;hi2;ri2;ab,bitFroEtiC;fiC;ci4;ga3;raC;ry;are3etiOrC;oprC;ia1;at0;aKuC;si2;arFcohDeCiJl,oof;rt;olC;ic;mi2;ead;ainEgressiDoniC;zi2;ve;st;id; JeHuGvC;aDerB;se;nc0;ed;lt;pt,qC;ua1;hoc,infinitC;um;cuDtu4u1;al;ra1;erMlLoJruIsDuC;nda3;e3oDtra9;ct;lu1rbi2;ng;te;pt;aCve;rd;aze,e;ra3;nt",Comparable:"true¦0:41;1:4I;2:45;3:4B;4:3X;5:2Y;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou3;aBe9hi1Yi7r6;o3y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge4rda2xi3;g9in,st;g0n6pco3Mse4;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd",TextValue:"true¦bOeJfDhundredNmOninAone,qu8s6t0zeroN;enMh3rNw0;e0o;l0ntD;fHve;ir0ousandKree;d,t6;e0ix8;cond,pt1ven7xt1;adr0int0;illionD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en0;!th;illion0;!s,th",Ordinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s",Expression:"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la",Adverb:"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Preposition:"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Determiner:"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er"},gt=["Person","Place","Organization"],ft={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:gt},Actor:{isA:"Noun",notA:gt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:gt},Demonym:{isA:["Noun","ProperNoun"],notA:gt},Possessive:{isA:"Noun"}},mt={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},vt={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},bt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],yt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Time:{isA:["Date"],notA:["Value"]},Determiner:{notA:bt},Conjunction:{notA:bt},Preposition:{notA:bt},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},wt={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},kt=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:wt[t]?e[t].color=wt[t]:e[t].isA.some((function(r){return!!wt[r]&&(e[t].color=wt[r],!0)}))})),e},At=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},Et=function(e,t,r){var n=Bt(t);return n1&&(r.hasCompound[i[0]]=!0),"Singular"===t){var o=a.toPlural(e,r);n[o]=n[o]||"Plural"}if("Infinitive"===t)for(var s=a.conjugate(e,r),u=Object.keys(s),l=0;l0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===Jt.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},Wt(e),r)).Gerund&&(r.Gerund=Qt.Gerund(e)),void 0===r.PastTense&&(r.PastTense=Qt.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=Qt.PresentTense(e)),r},Xt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],Yt=[/ary$/],er={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},tr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],rr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],nr=[/ary$/,/ous$/],ar={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},ir=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],or={toSuperlative:function(e){if(er.hasOwnProperty(e))return er[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=cr(e);return null!==n?n:lr.test(e)?e+"es":e+"s"},dr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],pr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Dr={tag:function(e,t){return e?(xr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(xr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},jr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Br=function(e){return e.split(/[ -]/g)},Er=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Br(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Or(o)),i=ht(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Tr=E((function(e,t){var r=function(e,t){var r=ht(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(r){var n=ht(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.append(n,t)})),this):r(e,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(r){var n=ht(e,t.world,t.pool())[0];t.buildFrom([n]).tagger(),r.prepend(n,t)})),this):r(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Ir(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),Sr=E((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};qr.alphabetical=qr.alpha,qr.wordcount=qr.wordCount;var Jr={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},Kr={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):Jr.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===hn.test(i)){var s=i.replace(hn,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},gn=/[\'‘’‛‵′`´]$/,fn=/^(m|k|cm|km|m)\/(s|h|hr)$/,mn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}$/,"Fraction"],[/^[0-9.]{1,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/,"NumberRange"],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],vn=/^[IVXLCDM]{2,}$/,bn=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,yn="Adjective",wn="Infinitive",kn="PresentTense",An="Singular",$n="PastTense",Pn="Adverb",Gn="Expression",Cn="Actor",xn="Verb",Dn="Noun",jn="LastName",Bn={a:[[/.[aeiou]na$/,Dn],[/.[oau][wvl]ska$/,jn],[/.[^aeiou]ica$/,An],[/^([hyj]a)+$/,Gn]],c:[[/.[^aeiou]ic$/,yn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,$n],[/.[aeo]{2}[bdgmnprvz]ed$/,$n],[/.[aeiou][sg]hed$/,$n],[/.[aeiou]red$/,$n],[/.[aeiou]r?ried$/,$n],[/.[bcdgtr]led$/,$n],[/.[aoui]f?led$/,$n],[/.[iao]sed$/,$n],[/[aeiou]n?[cs]ed$/,$n],[/[aeiou][rl]?[mnf]ed$/,$n],[/[aeiou][ns]?c?ked$/,$n],[/[aeiou][nl]?ged$/,$n],[/.[tdbwxz]ed$/,$n],[/[^aeiou][aeiou][tvx]ed$/,$n],[/.[cdlmnprstv]ied$/,$n],[/[^aeiou]ard$/,An],[/[aeiou][^aeiou]id$/,yn],[/.[vrl]id$/,yn]],e:[[/.[lnr]ize$/,wn],[/.[^aeiou]ise$/,wn],[/.[aeiou]te$/,wn],[/.[^aeiou][ai]ble$/,yn],[/.[^aeiou]eable$/,yn],[/.[ts]ive$/,yn]],h:[[/.[^aeiouf]ish$/,yn],[/.v[iy]ch$/,jn],[/^ug?h+$/,Gn],[/^uh[ -]?oh$/,Gn]],i:[[/.[oau][wvl]ski$/,jn]],k:[[/^(k){2}$/,Gn]],l:[[/.[gl]ial$/,yn],[/.[^aeiou]ful$/,yn],[/.[nrtumcd]al$/,yn],[/.[^aeiou][ei]al$/,yn]],m:[[/.[^aeiou]ium$/,An],[/[^aeiou]ism$/,An],[/^h*u*m+$/,Gn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,yn],[/[^aeiou]ician$/,Cn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Gn],[/^(yo)+$/,Gn],[/^woo+[pt]?$/,Gn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/.[ilk]er$/,"Comparative"],[/[aeiou][pns]er$/,An],[/[^i]fer$/,wn],[/.[^aeiou][ao]pher$/,Cn]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,yn],[/[aeiou].*ist$/,yn],[/^[a-z]et$/,xn]],s:[[/.[^aeiou]ises$/,kn],[/.[rln]ates$/,kn],[/.[^z]ens$/,xn],[/.[lstrn]us$/,An],[/.[aeiou]sks$/,kn],[/.[aeiou]kes$/,kn],[/[aeiou][^aeiou]is$/,An],[/[a-z]\'s$/,Dn],[/^yes+$/,Gn]],v:[[/.[^aeiou][ai][kln]ov$/,jn]],y:[[/.[cts]hy$/,yn],[/.[st]ty$/,yn],[/.[gk]y$/,yn],[/.[tnl]ary$/,yn],[/.[oe]ry$/,An],[/[rdntkbhs]ly$/,Pn],[/...lly$/,Pn],[/[bszmp]{2}y$/,yn],[/.(gg|bb|zz)ly$/,yn],[/.[aeiou]my$/,yn],[/[ea]{2}zy$/,yn],[/.[^aeiou]ity$/,An]]},En="Adjective",Nn="Infinitive",Fn="PresentTense",On="Singular",Vn="PastTense",Tn="Adverb",zn="Plural",Hn="Actor",In="Verb",Mn="Noun",Sn="LastName",_n="Modal",Ln=[null,null,{ea:On,ia:Mn,ic:En,ly:Tn,"'n":In,"'t":In},{oed:Vn,ued:Vn,xed:Vn," so":Tn,"'ll":_n,"'re":"Copula",azy:En,end:In,ped:Vn,ffy:En,ify:Nn,ing:"Gerund",ize:Nn,lar:En,mum:En,nes:Fn,nny:En,oid:En,ous:En,que:En,rmy:En,rol:On,sis:On,zes:Fn},{amed:Vn,aped:Vn,ched:Vn,lked:Vn,nded:Vn,cted:Vn,dged:Vn,akis:Sn,cede:Nn,chuk:Sn,czyk:Sn,ects:Fn,ends:In,enko:Sn,ette:On,fies:Fn,fore:Tn,gate:Nn,gone:En,ices:zn,ints:zn,ines:zn,ions:zn,less:Tn,llen:En,made:En,nsen:Sn,oses:Fn,ould:_n,some:En,sson:Sn,tage:Nn,teen:"Value",tion:On,tive:En,tors:Mn,vice:On},{tized:Vn,urned:Vn,eased:Vn,ances:zn,bound:En,ettes:zn,fully:Tn,ishes:Fn,ities:zn,marek:Sn,nssen:Sn,ology:Mn,ports:zn,rough:En,tches:Fn,tieth:"Ordinal",tures:zn,wards:Tn,where:Tn},{auskas:Sn,keeper:Hn,logist:Hn,teenth:"Value"},{opoulos:Sn,borough:"Place",sdottir:Sn}],qn={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}fn.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&vn.test(r)&&bn.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===Ln[i.length].hasOwnProperty(i)){var o=Ln[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Bn.hasOwnProperty(n))for(var a=Bn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(Jn)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),qn.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},Rn=function(e,t){var r=e.world;Kn.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},aa={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ia=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],oa=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],sa=[/i$/,/ae$/],ua=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ia.find((function(t){return e.tags[t]})))return;if(aa.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(aa.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(oa.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(sa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},la=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),ca=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},ha=/^[A-Z]('s|,)?$/,da=/([A-Z]\.){2}[A-Z]?/i,pa={I:!0,A:!0},ga={neighbours:Zn,case:ea,stem:na,plural:ua,organizations:function(e,t){for(var r=0;r0?ai=ai.concat(t):ai.push(e)})),ai.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:Sa(r),words:Sa(n)}),e}));var ii=ai,oi=function(e){ii.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=Sa(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},pi=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},Di=/\(/,ji=/\)/,Bi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(Di,"");var r=e.lastTerm();r.post=r.post.replace(ji,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return ui(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();Qi.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new Qi(e,this,this.world)},Qi.prototype.fromText=function(e){var t=ht(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(Qi.prototype,Ui.misc),Object.assign(Qi.prototype,Ui.selections),Wi(Qi);var Zi={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Zi).forEach((function(e){return Qi.prototype[e]=Qi.prototype[Zi[e]]}));var Xi=Qi,Yi=function(e){var t=e.termList();return pn(t,e.world),e};return function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=ht(e,r),a=new Xi(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=ht(e,n),i=new Xi(a,null,n);return t&&Yi(i),i},n.extend=function(e){return e(Xi,r,this,Le,oe,Je),this},n.fromJSON=function(e){var t=dt(e,r);return new Xi(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e){return ze(e)},n.version="13.6.0",n.import=n.load,n}(new Ar)})); diff --git a/builds/compromise.mjs b/builds/compromise.mjs index 389a60d10..daf1f8604 100644 --- a/builds/compromise.mjs +++ b/builds/compromise.mjs @@ -1,4 +1,4 @@ -/* compromise 13.5.0 MIT */ +/* compromise 13.6.0 MIT */ function _typeof(obj) { "@babel/helpers - typeof"; @@ -427,11 +427,11 @@ var parse = parseTerm; function createCommonjsModule(fn, basedir, module) { return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } }, fn(module, module.exports), module.exports; } @@ -3434,7 +3434,7 @@ var fromJSON = function fromJSON(json, world) { var fromJSON_1 = fromJSON; -var _version = '13.5.0'; +var _version = '13.6.0'; var _data = { "Comparative": "true¦better", @@ -3451,40 +3451,40 @@ var _data = { "Plural": "true¦records", "Conjunction": "true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:0Z;1:12;a0Yb0Mc0Dd06e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Ts 2;doll0Fst0H; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Y;ep3ri1u2;de0Rff;faOmoO;st0Nze;al0i1o2;om,se;a4i0Kl06r3u2;dMrpoE;erogaWobl0P;rt,te0J;bjTceHthers;othi1umb0F;a4ee05o2;del,m2nopo0th0D;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", - "Honorific": "true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", + "Singular": "true¦0:10;1:13;a0Zb0Nc0Ed07e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Us 2;doll0Gst0I; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Z;ep3ri1u2;de0Sff;faOmoO;st0Oze;al0i1o2;om,se;a4i0Ll07r3u2;dMrpoE;erogaXobl0Q;rt,te0K;bjUceHthers;othi1umb0G;a4ee06o2;del,m2nopo0rni1th0E;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irl00laci05od,rand3u2;l0y; slam,fa2mo2;th02;an;a5ella,ly,ol0r3un2;di1;iUo2;ntiXsO;mi0thW;conomy,gg,ner6ven3x2;ampRecu8;i1t;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", + "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", + "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", - "Uncountable": "true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics", - "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHuG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", + "Uncountable": "true¦0:1F;a1Mb1Ec15d12e0Vf0Pg0Ih0Di09j08knowled1Ll03mVnews,oUpRrMsBt6vi5w1;a3ea06i2oo1;d,l;ldlife,ne;rmth,t0;neg12ol07tae;e4h3oothpaste,r1una;affQou1;ble,sers,t;ermod1Hund0;a,nnis;a9cene05eri0Sh8il7kittl0Snow,o6p4t2u1;g0Vnshi0L;ati1Ge1;am,el;ace19e1;ci0Ned;ap,cc0;k,v0;eep,ingl0K;d08fe13l1nd;m0Wt;a4e2ic1;e,ke0H;c1laxa0Dsearch;ogni0Crea0C;bi0Din;aKe2hys13last6o1ressZ;lit12rk,w0;a0YtrV;bstetr10il,xygen;a6e4ilk,o3u1;mps,s1;ic;nHo0E;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics", + "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", - "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,p,rd,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,t,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", + "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", + "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", "Region": "true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "FemaleName": "true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:FS;6:ER;7:EP;8:GF;9:EZ;A:GB;B:E5;C:G8;D:FO;E:FL;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et7onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s5;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmCAra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lC;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaE;chGe,i0mo0n5EquCDvDy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et7in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s5;cy,et7;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eD;h75il9t2;a,cSgOiJjor2l6In2s5tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lCna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri7;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alCd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", + "FemaleName": "true¦0:FX;1:G1;2:FQ;3:FC;4:FB;5:FR;6:EQ;7:EO;8:GE;9:EY;A:GA;B:E4;C:G7;D:FN;E:FK;F:EF;aE1bD3cB7dAHe9Ff90g8Gh82i7Rj6Tk5Zl4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7DeHol1TvG;et7onB8;le0sen3;an9endBMhiB3iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9WenG0;kCYtor3;da,l8Unus,rG;a,nGoniD1;a,iDB;leGnesEB;nDKrG;i1y;aSePhNiMoJrGu6y4;acG2iGu0E;c3na,sG;h9Lta;nHrG;a,i;i9Iya;a5HffaCFna,s5;al3eGomasi0;a,l8Fo6Wres1;g7To6VrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmC9ra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFIlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF7r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh74;dy;aKeGirlBKo0y6;ba,e0i6lIrG;iGrBOyl;!d6Z;ia,lBU;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Xre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBMome;e,ie;in1ri0;a02eXhViToHuG;by,thBJ;bQcPlOnNsHwe0xG;an93ie,y;aHeGie,lC;ann8ll1marBEtB;!lGnn1;iGyn;e,nG;a,d7V;da,i,na;an9;hel52io;bin,erByn;a,cGkki,na,ta;helBYki;ea,iannDWoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cAQkaE;chGe,i0mo0n5DquCCvDy0;aCBelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAV;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4No6rvaBAtHulG;a,et7in1;ricGsy,tA7;a,e,ia;ctav3deHfAVlGphAV;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB1k8AolG;a,eBG;!mh;l7Sna,risF;dIi5OnHo22taG;li1s5;cy,et7;eAiCN;a01ckenz2eViLoIrignayani,uriBFyG;a,rG;a,na,tAR;i4ll9WnG;a,iG;ca,ka,qB3;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9IlG;iGy;cent,e;red;!e6;ae6el3F;ag4JgKi,lHrG;edi60isFyl;an2iGliF;nGsAL;a,da;!an,han;b08c9Dd06e,g04i03l01nZrKtJuHv6Rx86yGz2;a,bell,ra;de,rG;a,eD;h74il9t2;a,cSgOiJjor2l6Hn2s5tIyG;!aGbe5PjaAlou;m,n9R;a,ha,i0;!aIbAKeHja,lCna,sGt52;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Jueri7;!t;!ry;et3HiB;elGi60y;a,l1;dGon,ue6;akranBy;iGlo35;a,ka,n9;a,re,s2;daGg2;!l2V;alCd2elGge,isBFon0;eiAin1yn;el,le;a0He07iWoQuKyG;d3la,nG;!a,dHe9RnGsAP;!a,e9Q;a,sAN;aB0cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a29e,l24n9;is,l1FrHtt2uG;el6is1;aIeHi8na,rG;a6Yi8;lei,n1tB;!in1;aPbb82d3lLnIsHv3zG;!a,be4Jet7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Fe;!n4E;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", + "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", "Date": "true¦ago,t0weekend,yesterd2;mr2o0;d0morrow;ay;!w", "FirstName": "true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is", - "LastName": "true¦0:34;1:3B;2:39;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs2;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu1;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow20ut1N;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils2guy5ix2owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nYu3;an6ns2;ss2;ki0Es5;cks2nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs2;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr1;ayli3ub0;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", - "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEern1iBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", + "LastName": "true¦0:35;1:3C;2:3A;3:2Z;4:2F;5:31;a3Cb32c2Pd2Fe2Cf26g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Voshi1Kun;ma6ng;da,guc20mo28sh22zaR;iao,u;a7eb0il6o3right,u;li3Cs2;gn0lk0ng,tanabe;a6ivaldi;ssilj38zqu1;a9h8i2Ho7r6sui,urn0;an,ynisJ;lst0Prr1Vth;at1Vomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2BzuE;a6ein0;l24rm0;sa,u3;rn4th;lva,mmo25ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag20i9o7u6;bio,iz,sD;b6dri1NgIj0Tme25osevelt,ssi,ux,w17;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow21ut1O;as6hl0;so;a6illips;m,n1U;ders5et8r7t6;e0Nr4;ez,ry;ers;h22rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1P;ega,iz;a6eils2guy5ix2owak,ym1F;gy,ka6var1L;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Ne6r0V;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Rr6w0K;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Mo8u7wo6;k,n;mar,znets4;bay6vacs;asZ;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nZu3;an6ns2;ss2;ki0Fs5;cks2nsse0E;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghOynh;a3ffmann,rvat;mingw7nde6rO;rs2;ay;ns5rrRs7y6;asEes;an4hi6;moK;aAil,o9r7u6;o,tierr1;ay6ub0;li3;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", + "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEiBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Y;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", "Person": "true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", "PhrasalVerb": "true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:73;1:7I;2:7O;3:7H;4:7A;5:5B;6:4R;7:49;8:48;9:7F;A:60;a6Eb60c5Md52e4Pf45g3Xh3Mi31j2Zk2Yl2Nm2Cn23o1Np16quack,r0Ws0Ct05uMvJwByear5;arp0eFholeEiDoB;man5oBu67;d69zy;despr6Zs5B;!sa7;eClBste22;co1El o4H;!k5;aCiBola47;b7Nce versa,ol50;ca2gabo5Ynilla;ltSnFpCrb55su4tterB;!mo6U; f30b1KpCsBti1D;ca7et,ide dItairs;er,i3J;aLbeco6Lconvin23deIeHfair,ivers4knGprecedUrEsCwB;iel1Writt5U;i1RuB;pervis0specti3;eBu5;cognHgul6Bl6B;own;ndi3v5Oxpect0;cid0rB;!grou5JsB;iz0tood;b7ppeaHssu6AuthorB;iz0;i20ra;aFeDhough4KoCrB;i1oubl0;geth6p,rp6B;en5LlBm4Vrr2Q;li3;boo,lBn;ent0;aTcSeQhPiNmug,nobbi3AoLpKqueami3AtFuBymb5Y;bDi gener50pBrprisi3;erBre0H;! dup6b,i25;du0seq4P;anda6OeEi0LrBy34;aightBip0; fBfB;or56;adfa5Wreotyp0;a4Uec2Cir1Flend5Wot on; call0le,mb6phist1TrBu0Tvi3X;d5Ury;gnifica2nB;ce4Qg7;am2Le6ocki3ut;cBda1em5lfi2Uni1Spa63re8;o1Cr3R;at53ient24reec53;cr0me,ns serif;aIeEiCoB;bu5Ktt4PuOy4;ghtBv4;!-25fA;ar,bel,condi1du5Xfres4XlDpublic3RsBtard0;is43oB;lu1na2;e1Auc41;b5EciB;al,st;aMeKicayu8lac5Copuli5BrCuB;bl54mp0;eFiCoB;!b06fu5Cmi2Xp6;mCor,sBva1;ti8;a4Re;ci58mB;a0EiB;er,um;ac1WrBti1;fe9ma2Pplexi3v2Z;rBst;allelDtB;-tiBi4;me;!ed;bMffKkJld fashion0nIpHrg1Dth6utGvB;al,erB;!aDniCt,wB;eiBrouB;ght;ll;do0Rer,g2Hsi41;en,posi1; boa5Ag2Fli8;!ay; gua58bBli8;eat;eDsB;cBer0Dole1;e8u3F;d2Ose;ak0eIiHoBua4J;nFrCtB;ab7;thB;!eB;rn;chala2descri4Ustop;ght5;arby,cessa3Sighbor5xt;aJeHiEoBultip7;bi7derClBnth5ot,st;dy;a1n;nBx0;iaBor;tu2Y;di49naBre;ci3;cBgenta,in,jZkeshift,le,mmoth,ny,sculi8;ab2Uho;aKeFiCoBu0Z;uti0Yvi3;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda38;!-08;ngu3Lst,tt6;ap1Oind5no06;agg0uB;niKstifi0veni7;de4gno46lleg4mOnDpso 1RrB;a1releB;va2; JaIbr0corHdFfluenPiPnEsDtB;a9en3GoxB;ic31;a8i2N;a1er,oce2;iCoB;or;re9;deq3Eppr2T;fBsitu,vitro;ro2;mFpB;arDerfe9oBrop6;li1rtB;a2ed;ti4;eBi0M;d2Ln30;aGelFiDoBumdr36;ne2Uok0rrBs03ur5;if2N;ghfalut1KspB;an2L;liVpfA;lEnDrB;d01roB;wi3;dy,gi3;f,low0;ainfAener2Eiga1YlHoGraDuB;ilBng ho;ty;cCtB;efAis;efA;ne,od;ea28ob4;aQeKinJlIoDrB;a1PeBoz1G;e28q0YtfA;oDrB; keeps,eBm6tuna1;g00ign;liB;sh;ag2Uue2;al,i1;dFmCrB;ti7;a7ini8;ne;le; up;bl0i2l20r Cux,voB;ri1uri1;oBreac1A;ff;aJfficie2lImiHnFre9there4veExB;a9cess,pe1JtraCuB;be2Gl0D;!va19;n,ryday; Bcouragi3ti0M;rou1sui1;ne2;abo1YdMe14i1;g6sB;t,ygB;oi3;er;aReJiDoBrea11ue;mina2ne,ubB;le,tfA;dact16fficu1JsCvB;er1F;creDeas0gruntl0hone1AordCtB;a2ress0;er5;et; HadpGfFgene1KliDrang0spe1KtCvoB;ut;ail0ermin0;be1Hca1ghB;tfA;ia2;an;facto;i5magBngeroVs0E;ed,i3;ly;ertaNhief,ivil,oDrB;aBowd0u0D;mp0vYz0;loJmHnCoi3rrBve0K;e9u1D;cre1grEsDtB;emBra0B;po09;ta2;ue2;mer04pleB;te,x;ni4ss4;in;aLeHizarGlFoCrB;and new,isk,okL;gCna fiSttom,urgeoB;is;us;ank,iE;re;autifAhiClov0nBst,yoC;eRt;nd;ul;ckCnkru0SrrB;en;!wards; priori,b0Ic0Fd05fra04g00hZlUma01ntiquTppQrKsIttracti02utheHvEwB;aCkB;wa0P;ke,re;ant garCerB;age;de;ntQ;leep,tonisB;hi3;ab,bitEroDtiB;fiB;ci4;ga2;raB;ry;are2etiLrB;oprB;ia1;at0;arEcohCeBiIl,oof;rt;olB;ic;mi3;ead;ainDgressiConiB;zi3;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda2;e2oCtra9;ct;lu1rbi3;ng;te;pt;aBve;rd;aze,e;ra2;nt", - "Comparable": "true¦0:3Z;1:4G;2:43;3:49;4:3V;5:2W;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou3;aBe9hi1Wi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge4rda2xi3;gue,in,st;g0n6pco3Kse4;like0ti1;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "Adjective": "true¦0:7N;1:82;2:81;3:88;4:7U;5:5R;6:57;7:4N;8:4M;9:7Z;A:6G;B:7L;a6Vb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uNvKwCyear5;arp0eGholeFiEoC;man5oCu6O;d6Qzy;despr7Ks5S;!sa7;eDlCste2A;co1Nl o4W;!k5;aDiCola4M;b88ce versa,ol5H;ca3gabo6Fnilla;ltUnHpDrb5Msu4tterC;!mo7F; f3Ab1SpEsCti1M;ca7etCide dKtairs;!ti2;er,i3U;aMbeco75convin2AdeJeIfair,ivers4knHprecedWrFsDwC;iel3Oritt6A;i1YuC;pervis0spec3Z;eCu5;cognIgul6Tl6T;own;ndi2v64xpect0;cid0rC;!grou5ZsC;iz0tood;b7pp0Essu6UuthorC;iz0;i27ra;aHeFhEi6AoDrC;i1oubl0us3N;geth6p,rp6Vuc67;ough4Xril34;en60l33mpCrr2Y;o6Ati2;boo,lCn;ent0;aXcWeUhTiRmug,nobbi3MoPpOqueami3MtGuCymb6H;bEi gener5EpCrpri6D;erCre0O;! dup6b,i2D;du0seq53;anda77eHiGrCunni2y3G;aightDiC;ki2p0; fCfC;or5K;ll,r5S;aCreotyp0;dfa6Cmi2;a56ec2Hir1Ilend6Cot on; call0le,mb6phist1YrCu0Wvi49;d6Ary;gnifica3nC;ce52g7;am2Se6ocki2ut;cCda1em5lfi33ni1Xpa6Jre8;o1Fr43;at5Gient29reec5G;cr0me;aKeFiDoC;bu60tt51uRy4;ghtCv4;!-2CfA;ar,bel,condi1du6Dfres5AlFpublic43sDtard0vC;ea27;is4DoC;lu1na3;aRe1Duc4B;b5TciCllyi2;al,st;aPeMicayu8lac5Ropuli5QrDuC;bl5Jmp0n51;eHiEoC;!b08fuBmiCp6;ne3si2;mDor,sCva1;ti8;a53e;ciBmC;a0FiC;er,um;ac21rCti1;fe9ma2YpleCv39;xi2;rCst;allelEtC;-tiCi4;me;!ed;bMffKkJld fashion0nIpHrg1Fth6utGvC;al,erC;!all,niDt,wC;eiCrouC;ght;do0Uer,g2Rsi4B;en,posi1; boa5Og2Pli8;!ay; gua5MbCli8;eat;eEsC;cCer0Fole1;e8u3P;d2Yse;aKeJiIoCua4X;nGrDtC;ab7;thC;!eC;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1B;aJeHiEoCultip7;bi7derCl0Wnth5ot,st;a1n;nCx0;dblo0SiaCor;tu38;ande3Qdi4NnaCre;ci2;cCgenta,in,j02keshift,le,mmoth,ny,sculi8;ab34ho;aLeGiDoCu16;uti15vi2;mDteraC;l,te;it0;ftFgCth4;al,eDitiC;ma1;nda3K;!-0D;ngu3Zst,tt6;ap1Yind5no0B;agg0uC;niNstifi0veni7;de4gno4Klleg4mRnFpso 21rC;a1rC;eleCita0K;va3; LaKbr0corJdHfluenRiRnGsFtDviC;go0Gti2;a9enBoxC;ic3B;a8i2Vul0E;a1er,oce3;iDoC;or;re9;deq3Qppr33;fCsitu,vitro;ro3;mGpC;arEerfe9oCrop6;li1rtC;a3ed;ti4;eCi0T;d2VnB;aJeGiEoCumdr3I;ne36ok0rrCs09ur5;if2Z;ghfalut1RspC;an2X;aDlC;liZpfA;li2;lFnErC;d05roC;wi2;dy;f,low0;ainfAener2Oiga24lIoHraEuC;ilCng ho;ty;cDtC;efAis;efA;ne,od;ea2Iob4;aUeOinNlLoGrC;a1VeEoz1MustC;raC;ti2;e2Gq11tfA;oErC; keeps,eCm6tuna1;g04ign;liC;sh;aCue3;g31tte1P;al,i1;dGmDrC;ti7;a7ini8;ne;le; up;bl0i3lBr Dux,voC;ri1uri1;oCreac1E;ff;aMfficie3lLmInGre9there4veFxC;a9cess,pe1QtraDuC;be2Nl0F;!va1E;n,ryday; CcouraFti0P;rou1sui1;erDiC;ne3;gi2;abo23dNe17i1;g6sC;t,ygC;oi2;er;aSeKiEoCrea14ue;mina3ne,ubC;le,tfA;dact1Bfficu1OsDvC;erB;creEeas0gruntl0hone1FordDtC;a3ressN;er5;et; IadpHfGgene1PliErang0spe1PtDvoC;ut;ail0ermin0;be1Mca1ghC;tfA;ia3;an;facto;i5magCngeroVs0G;ed,i2;ly;ertaNhief,ivil,oErC;aCowd0u0G;mp0vZz0;loJmHnDrrCve0P;e9u1I;cre1fu0LgrEsDtC;empo0Dra0E;ta3;ue3;mer08pleC;te,x;ni4ss4;in;aNeJizarIlGoDrC;and new,isk,okN;gDna fiUttom,urgeoC;is;us;ank,indC;!i2;re;autifAhiDlov0nCst,yoD;eUt;nd;ul;ckDnkru0XrrC;en;!wards; priori,b0Nc0Kd0Afra09g05h04lZmXntiquWppTrNsJttracti07utheIvFwC;aDkC;wa0U;ke,re;ant garDerC;age;de;ntV;leep,piEsuEtonC;isC;hi2;ri2;ab,bitFroEtiC;fiC;ci4;ga3;raC;ry;are3etiOrC;oprC;ia1;at0;aKuC;si2;arFcohDeCiJl,oof;rt;olC;ic;mi2;ead;ainEgressiDoniC;zi2;ve;st;id; JeHuGvC;aDerB;se;nc0;ed;lt;pt,qC;ua1;hoc,infinitC;um;cuDtu4u1;al;ra1;erMlLoJruIsDuC;nda3;e3oDtra9;ct;lu1rbi2;ng;te;pt;aCve;rd;aze,e;ra3;nt", + "Comparable": "true¦0:41;1:4I;2:45;3:4B;4:3X;5:2Y;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou3;aBe9hi1Yi7r6;o3y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge4rda2xi3;g9in,st;g0n6pco3Mse4;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", "TextValue": "true¦bOeJfDhundredNmOninAone,qu8s6t0zeroN;enMh3rNw0;e0o;l0ntD;fHve;ir0ousandKree;d,t6;e0ix8;cond,pt1ven7xt1;adr0int0;illionD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en0;!th;illion0;!s,th", "Ordinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", - "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", + "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", "Preposition": "true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er" }; @@ -4298,7 +4298,7 @@ var plurals = { modulus: 'moduli', mosquito: 'mosquitoes', mouse: 'mice', - move: 'moves', + // move: 'moves', nebula: 'nebulae', nucleus: 'nuclei', octopus: 'octopi', @@ -8949,7 +8949,7 @@ var startsWith = [//web tags [/^[0-9]{1,4}\/[0-9]{1,4}$/, 'Fraction'], //3/2ths //range [/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8 -[/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 +[/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 //with unit [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp //ordinal @@ -9050,7 +9050,7 @@ var endsWith$1 = { ], r: [[/.[bdfklmst]ler$/, 'Noun'], [/.[ilk]er$/, 'Comparative'], [/[aeiou][pns]er$/, Sing], [/[^i]fer$/, Inf], [/.[^aeiou][ao]pher$/, Actor]], t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj], [/[aeiou].*ist$/, Adj], [/^[a-z]et$/, Verb]], - s: [[/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks + s: [[/.[^aeiou]ises$/, Pres], [/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], [/.[aeiou]sks$/, Pres], //masks [/.[aeiou]kes$/, Pres], //bakes [/[aeiou][^aeiou]is$/, Sing], [/[a-z]\'s$/, Noun], [/^yes+$/, Exp] //yessss ], @@ -9977,6 +9977,11 @@ var banList = { that: true, there: true }; +var hereThere = { + here: true, + there: true, + everywhere: true +}; var isPossessive = function isPossessive(term, pool) { // if we already know it @@ -10017,6 +10022,11 @@ var isPossessive = function isPossessive(term, pool) { if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } + return true; } //rocket's red glare @@ -10112,7 +10122,7 @@ var checkPerfect = function checkPerfect(term, phrase) { var _05PerfectTense = checkPerfect; -var isRange = /^([0-9]+)[-–—]([0-9]+)$/i; //split '2-4' into '2 to 4' +var isRange = /^([0-9]{1,3})[-–—]([0-9]{1,3})$/i; //split '2-4' into '2 to 4' var checkRange = function checkRange(term) { if (term.tags.PhoneNumber === true) { @@ -10192,6 +10202,11 @@ var createPhrase = function createPhrase(found, doc) { if (isNumber.test(t.implicit)) { t.tags.Number = true; t.tags.Cardinal = true; + } // if no tag, give it a noun + + + if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; } }); return phrase; @@ -10259,7 +10274,7 @@ var miscCorrection = function miscCorrection(doc) { m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('#Pronoun').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train m = hasTag(doc, 'Value'); m = m.match('#Value #PresentTense'); @@ -10321,6 +10336,12 @@ var list = [// ==== Mutliple tags ==== match: '#Copula (pretty|dead|full|well) (#Adjective|#Noun)', tag: '#Copula #Adverb #Adjective', reason: 'sometimes-adverb' +}, //i better .. +{ + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' }, //walking is cool { match: '[#Gerund] #Adverb? not? #Copula', @@ -10455,8 +10476,26 @@ var list = [// ==== Mutliple tags ==== }]; var _01Misc = list; -//Dates: 'june' or 'may' -var dates = '(april|june|may|jan|august|eve)'; +var _ambig = { + adverbs: { + // adverbs than can be adjectives + adjectives: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'] + }, + person: { + // names that are dates + dates: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that are adjectives + adjectives: ['misty', 'rusty', 'dusty', 'rich', 'randy'], + // names that are verbs + verbs: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + places: ['paris', 'alexandria', 'houston', 'kobe', 'salvador', 'sydney'], + // names that are nouns + nouns: ['art', 'bill', 'charity', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'gene', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet'] + } +}; + +var dates = "(".concat(_ambig.person.dates.join('|'), ")"); var list$1 = [// ==== Holiday ==== { match: '#Holiday (day|eve)', @@ -10646,7 +10685,111 @@ var list$1 = [// ==== Holiday ==== }]; var _02Dates = list$1; -var _03Noun = [// ==== Plural ==== +var adjectives$1 = "(".concat(_ambig.person.adjectives.join('|'), ")"); +var list$2 = [// all fell apart +{ + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' +}, // very rusty +{ + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' +}, // rusty smith +{ + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' +}, // rusty a. smith +{ + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' +}, //sometimes not-adverbs +{ + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' +}, //jack is guarded +{ + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' +}, // smoked poutine is +{ + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' +}, // baked onions are +{ + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' +}, // is f*ed up +{ + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' +}, //jack seems guarded +{ + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' +}, // Gerund-Adjectives - 'amusing, annoying' +//a staggering cost +{ + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' +}, //as amusing as +{ + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' +}, // more amusing than +{ + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' +}, // very amusing +{ + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' +}, // it was amusing +{ + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' +}, // found it amusing +{ + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' +}, // a bit amusing +{ + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' +}]; +var _03Adjective = list$2; + +var _04Noun = [// ==== Plural ==== //there are reasons { match: 'there (are|were) #Adjective? [#PresentTense]', @@ -10793,6 +10936,12 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'the-verb-of' +}, //next career move +{ + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' }, //the threat of force { match: '#Determiner #Noun of [#Verb]', @@ -10839,6 +10988,12 @@ var _03Noun = [// ==== Plural ==== group: 0, tag: 'Noun', reason: 'det-past' +}, // this swimming +{ + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' }, //air-flow { match: '(#Noun && @hasHyphen) #Verb', @@ -10901,73 +11056,6 @@ var _03Noun = [// ==== Plural ==== reason: 'swears-noun' }]; -var adjectives$1 = '(misty|rusty|dusty|rich|randy)'; -var list$2 = [// all fell apart -{ - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' -}, // very rusty -{ - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' -}, // rusty smith -{ - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' -}, // rusty a. smith -{ - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' -}, //sometimes not-adverbs -{ - match: '#Copula [(just|alone)]$', - group: 0, - tag: 'Adjective', - reason: 'not-adverb' -}, //jack is guarded -{ - match: '#Singular is #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'is-filled' -}, // smoked poutine is -{ - match: '[#PastTense] #Singular is', - group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' -}, // baked onions are -{ - match: '[#PastTense] #Plural are', - group: 0, - tag: 'Adjective', - reason: 'baked-onions' -}, //a staggering cost -{ - match: '(a|an) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a|an' -}, // is f*ed up -{ - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' -}, //jack seems guarded -{ - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' -}]; -var _04Adjective = list$2; - var _05Adverb = [//still good { match: '[still] #Adjective', @@ -11112,8 +11200,27 @@ var _06Value = [// ==== PhoneNumber ==== reason: 'a-is-one' }]; -var verbs$1 = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'; -var list$3 = [// ==== Tense ==== +var verbs$1 = "(".concat(_ambig.person.verbs.join('|'), ")"); +var list$3 = [// adj -> gerund +// amusing his aunt +{ + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Gerund', + reason: 'gerund-his-noun' +}, // loving you +{ + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' +}, // slowly stunning +{ + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' +}, // ==== Tense ==== //he left { match: '#Noun #Adverb? [left]', @@ -11301,6 +11408,12 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Infinitive', reason: 'open-the' +}, // compromises are possible +{ + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' }, // would wade { match: "#Modal [".concat(verbs$1, "]"), @@ -11312,6 +11425,12 @@ var list$3 = [// ==== Tense ==== group: 0, tag: 'Verb', reason: 'really-mark' +}, //to mark +{ + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' }, // wade smith { match: "".concat(verbs$1, " #Person"), @@ -11319,7 +11438,7 @@ var list$3 = [// ==== Tense ==== reason: 'rob-smith' }, // wade m. Cooper { - match: "".concat(verbs$1, " #Acronym? #ProperNoun"), + match: "".concat(verbs$1, " #Acronym #ProperNoun"), tag: 'Person', reason: 'rob-a-smith' }, // damn them @@ -11341,7 +11460,7 @@ var list$3 = [// ==== Tense ==== }]; var _07Verbs = list$3; -var places = '(paris|alexandria|houston|kobe|salvador|sydney)'; +var places = "(".concat(_ambig.person.verbs.join('|'), ")"); var list$4 = [// ==== Region ==== //West Norforlk { @@ -11460,7 +11579,7 @@ var _09Org = [//John & Joe's reason: 'noun-public-school' }]; -var nouns$1 = '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'; +var nouns$1 = "(".concat(_ambig.person.nouns.join('|'), ")"); var months = '(january|april|may|june|jan|sep)'; //summer|autumn var list$5 = [// ==== Honorific ==== @@ -11512,11 +11631,17 @@ var list$5 = [// ==== Honorific ==== tag: 'Person', reason: 'possessive-name' }, { - match: '#Acronym #ProperNoun', + match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', tag: 'Person', - reason: 'acronym-titlecase', + reason: 'titlecase-acronym-titlecase', safe: true }, //ludwig van beethovan +{ + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true +}, //jk rowling { match: '#Person (jr|sr|md)', tag: 'Person', @@ -11551,10 +11676,20 @@ var list$5 = [// ==== Honorific ==== safe: true }, //king of spain { - match: '(king|queen|prince|saint|lady) of? #Noun', + match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true +}, //lady Florence +{ + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' +}, //saint Foo +{ + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' }, //Foo U Ford { match: '[#ProperNoun] #Person', @@ -11628,23 +11763,21 @@ var list$5 = [// ==== Honorific ==== tag: 'Person', reason: 'infinitive-person' }, // may waits for -{ - match: "[".concat(months, "] #PresentTense for"), - group: 0, - tag: 'Person', - reason: 'ambig-active-for' -}, // may waits to -{ - match: "[".concat(months, "] #PresentTense to"), - group: 0, - tag: 'Person', - reason: 'ambig-active-to' -}, // april will +// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, +// may waits to +// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, +// april will { match: "[".concat(months, "] #Modal"), group: 0, tag: 'Person', reason: 'ambig-modal' +}, // may be +{ + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' }, // would april { match: "#Modal [".concat(months, "]"), @@ -11750,17 +11883,45 @@ var list$5 = [// ==== Honorific ==== }]; var _10People = list$5; +var adjectives$2 = "(".concat(_ambig.adverbs.adjectives.join('|'), ")"); +var list$6 = [// a bit cold +{ + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' +}, // dark green +{ + match: "[".concat(adjectives$2, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' +}, // kinda sparkly +{ + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' +}, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' +}]; +var _11Adverbs = list$6; + var matches = []; matches = matches.concat(_01Misc); matches = matches.concat(_02Dates); -matches = matches.concat(_03Noun); -matches = matches.concat(_04Adjective); +matches = matches.concat(_03Adjective); +matches = matches.concat(_04Noun); matches = matches.concat(_05Adverb); matches = matches.concat(_06Value); matches = matches.concat(_07Verbs); matches = matches.concat(_08Place); matches = matches.concat(_09Org); -matches = matches.concat(_10People); // cache the easier conditions up-front +matches = matches.concat(_10People); +matches = matches.concat(_11Adverbs); // cache the easier conditions up-front var cacheRequired$1 = function cacheRequired(reg) { var needTags = []; @@ -12048,6 +12209,7 @@ var addMethod$2 = function addMethod(Doc) { var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... .notIf('@hasComma . .? (and|or) .') //cool, and fun .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' .notIf('@hasComma (too|also)$') //at end of sentence .match('@hasComma'); @@ -12630,20 +12792,31 @@ var addMethod$5 = function addMethod(Doc) { Object.assign(Nouns.prototype, methods_1); Doc.prototype.nouns = function (n) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas var m = this.not(keep).splitAfter('@hasComma'); // combine them back together - m = m.concat(keep); + m = m.concat(keep); // don't combine over scare-quotes + + var quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + + m = m.not('(my|our|your|their|her|his)'); + } - m = m.not('(my|our|your|their|her|his)'); m = m.not('(of|for|by|the)$'); if (typeof n === 'number') { @@ -12913,7 +13086,7 @@ var toInfinitive$1 = function toInfinitive(parsed, world) { // verb.debug() //1. if it's already infinitive - var str = verb.text('normal'); + var str = verb.text('reduced'); if (verb.has('#Infinitive')) { return str; @@ -13056,7 +13229,25 @@ var toNegative = function toNegative(parsed, world) { var toNegative_1 = toNegative; -// turn 'would not really walk up' into parts +// who/what is doing this verb? +// get the prior verb most-likely doing this action +// (it can not-exist - 'close the door') +var getSubject = function getSubject(vb) { + var behind = vb.lookBehind(); + var lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } + + return lastNoun; +}; + +var getSubject_1 = getSubject; + var parseVerb = function parseVerb(vb) { var parsed = { adverb: vb.match('#Adverb+'), @@ -13067,7 +13258,9 @@ var parseVerb = function parseVerb(vb) { // 'will' of 'will go' particle: vb.match('#Particle'), // 'up' of 'pull up' - verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)') + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject_1(vb) }; // fallback, if no verb found if (!parsed.verb.found) { @@ -13174,7 +13367,18 @@ var conjugate$2 = function conjugate(parsed, world) { if (verb.has('#Modal')) { return doModal_1(parsed); - } + } // dont conjugate imperative form - 'close the door' + // if (parsed.auxiliary.has('do')) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + var hasHyphen = parsed.verb.termList(0).hasHyphen(); var infinitive = toInfinitive_1$1(parsed, world); @@ -13231,6 +13435,40 @@ var conjugate$2 = function conjugate(parsed, world) { var conjugate_1$1 = conjugate$2; +// verb-phrases that are orders - 'close the door' +// these should not be conjugated +var isImperative = function isImperative(parsed) { + // do the dishes + if (parsed.auxiliary.has('do')) { + return true; + } // speak the truth + // if (parsed.verb.has('^#Infinitive')) { + // // 'i speak' is not imperative + // if (parsed.subject.has('(i|we|you|they)')) { + // return false + // } + // return true + // } + + + return false; +}; // // basically, don't conjugate it +// exports.toImperative = function (parsed) { +// let str = parsed.original.text() +// let res = { +// PastTense: str, +// PresentTense: str, +// FutureTense: str, +// Infinitive: str, +// } +// return res +// } + + +var imperative = { + isImperative: isImperative +}; + // if something is 'modal-ish' we are forced to use past-participle // ('i could drove' is wrong) @@ -13293,6 +13531,7 @@ var participle = { toParticiple: toParticiple }; +var isImperative$1 = imperative.isImperative; var _toParticiple = participle.toParticiple, useParticiple$1 = participle.useParticiple; // remove any tense-information in auxiliary verbs @@ -13437,6 +13676,21 @@ var methods$7 = { return; } + if (isImperative$1(parsed)) { + return; + } // don't conjugate 'to be' + + + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' + + + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } + var str = conjugate_1$1(parsed, _this5.world).PastTense; if (str) { @@ -13596,6 +13850,19 @@ var methods$7 = { } return this.remove('#Negative'); + }, + + /** who, or what is doing this action? */ + subject: function subject() { + var list = []; + this.forEach(function (p) { + var found = getSubject_1(p); + + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); } }; @@ -13629,7 +13896,14 @@ var addMethod$9 = function addMethod(Doc) { var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas - var m = match.not(keep).splitAfter('@hasComma'); // // combine them back together + var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + + var gerund = m.match('#PastTense #Gerund'); + + if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + m = m.splitBefore(gerund.match('#Gerund')); + } // combine them back together + m = m.concat(keep); m.sort('index'); //handle slashes? diff --git a/changelog.md b/changelog.md index 0417f2b14..c9703e875 100644 --- a/changelog.md +++ b/changelog.md @@ -8,7 +8,16 @@ compromise uses semver, and pushes to npm frequently While all _Major_ releases should be reviewed, our only two _large_ releases are **v6** in 2016 and and **v12** in 2019. Others have been mostly incremental, or niche. -#### [Unreleased] + + +#### 13.6.0 + +- **[new]** first-attempt at `verbs().subject()` method +- **[change]** avoid conjugating imperative tense - 'please close the door' +- **[change]** misc tagging fixes #786 +- **[change]** .nouns() results split on quotations #783 +- **[change]** NumberRange must be < 4 digits #735 +- **[change]** reduction in #Person tag false-positives #### 13.5.0 diff --git a/data/abbreviations/honorifics.js b/data/abbreviations/honorifics.js index db4e7cf93..3292039bf 100644 --- a/data/abbreviations/honorifics.js +++ b/data/abbreviations/honorifics.js @@ -28,8 +28,6 @@ module.exports = [ 'mrs', 'ms', 'mstr', - 'op', - 'ord', 'phd', 'prof', 'pvt', diff --git a/data/abbreviations/places.js b/data/abbreviations/places.js index 70712b9d9..4e6a85413 100644 --- a/data/abbreviations/places.js +++ b/data/abbreviations/places.js @@ -6,7 +6,7 @@ module.exports = [ 'ave', 'blvd', 'cl', - 'ct', + // 'ct', 'cres', 'hwy', //states diff --git a/data/adjectives/adjectives.js b/data/adjectives/adjectives.js index b0cf11916..938f1c172 100644 --- a/data/adjectives/adjectives.js +++ b/data/adjectives/adjectives.js @@ -1,7 +1,166 @@ //adjectives that don't conjugate to superlative/adverb/verb forms module.exports = [ - 'a priori', + // '-ive' adjectives + 'alive', + 'aggressive', + 'attractive', + // 'ing' adjectives + // (sometimes a gerund verb) + 'absorbing', + 'agonizing', + 'alarming', + 'amazing', + 'amusing', + 'appetizing', + 'aspiring', + 'assuring', + 'astonishing', + 'blinding', + 'boring', + 'confusing', + 'damaging', + 'dashing', + 'distressing', + 'emerging', + 'encouraging', + 'flattering', + 'freezing', + 'frustrating', + 'gleaming', + 'harrowing', + 'healing', + 'insulting', + 'invigorating', + 'inviting', + 'irritating', + 'loving', + 'meandering', + 'menacing', + 'mindblowing', + 'nausiating', + 'ongoing', + 'outgoing', + 'perplexing', + 'promising', + 'punishing', + 'rallying', + 'refreshing', + 'relaxing', + 'revealing', + 'scathing', + 'screeching', + 'shocking', + 'steaming', + 'stirring', + 'striking', + 'stunning', + 'surprising', + 'telling', + 'tempting', + 'thrilling', + 'tiring', + 'touching', + 'trusting', + 'unappealing', + 'unassuming', + 'unbecoming', + 'unconvincing', + 'unending', + 'unsuspecting', + 'upsetting', + // 'ed' adjectives: + 'advanced', + 'antiquated', + 'beloved', + 'cramped', + 'crazed', + 'crowded', + 'damaged', + 'deranged', + 'detailed', + 'determined', + 'diseased', + 'disgruntled', + 'distressed', + 'fabled', + 'hallowed', + 'hooked', + 'imported', + 'inbred', + 'intoxicated', + 'jagged', + 'justified', + 'limited', + 'mixed', + 'naked', + 'nuanced', + 'old fashioned', + 'paralleled', + 'pumped', + 'retarded', + 'sacred', + 'so called', + 'sophisticated', + 'spirited', + 'stereotyped', + 'striped', + 'subdued', + 'talented', + 'troubled', + 'unauthorized', + 'undecided', + 'undersized', + 'unexpected', + 'unprecedented', + 'unrecognized', + 'unregulated', + 'unrelated', + 'unsupervised', + 'warped', + // '-ant' adjectives 'aberrant', + 'abundant', + 'arrogant', + 'constant', + 'defiant', + 'distant', + 'dominant', + 'elegant', + 'extravagant', + 'exuberant', + 'exultant', + 'flagrant', + 'ignorant', + 'important', + 'irrelevant', + 'nonchalant', + 'obediant', + 'observant', + 'redundant', + 'relevant', + 'reluctant', + 'resistant', + 'resonant', + 'significant', + 'vacant', + 'vibrant', + // '-ic' adjectives + 'alcoholic', + 'authentic', + 'didactic', + 'frantic', + 'generic', + 'gigantic', + 'hispanic', + 'horrific', + 'organic', + 'public', + 'scientific', + 'specific', + 'symbolic', + 'terrific', + // misc + 'a priori', 'ablaze', 'able', 'aboard', @@ -9,44 +168,26 @@ module.exports = [ 'abrupt', 'absent', 'absolute', - 'absorbing', 'abstract', - 'abundant', - 'accurate', 'actual', 'acute', 'ad hoc', 'ad infinitum', 'adept', - 'adequate', 'adult', - 'advanced', 'adverse', 'afraid', 'against', - 'aggressive', - 'agonizing', 'ahead', - 'alarming', - 'alcoholic', 'alert', - 'alive', 'all', 'aloof', - 'amazing', - 'antiquated', 'apparent', - 'appetizing', - 'appropriate', 'apt', 'arab', 'arbitrary', - 'arrogant', 'artificial', 'asleep', - 'astonishing', - 'attractive', - 'authentic', 'avant garde', 'average', 'awake', @@ -56,9 +197,7 @@ module.exports = [ 'backwards', 'bankrupt', 'barren', - 'beautiful', 'behind', - 'beloved', 'beneficial', 'bent', 'best', @@ -83,63 +222,36 @@ module.exports = [ 'complex', 'concrete', 'congruent', - 'constant', 'contemporary', 'contrary', - 'cooing', 'correct', 'corrupt', 'covert', - 'cramped', 'craven', - 'crazed', - 'crowded', 'crucial', 'daily', - 'damaged', - 'damaging', 'dangerous', - 'dashing', 'de facto', 'deadpan', - 'defiant', - 'degenerate', - 'deliberate', - 'delicate', - 'delightful', - 'deranged', - 'desperate', - 'detailed', - 'determined', 'devout', - 'didactic', 'difficult', 'discreet', - 'diseased', - 'disgruntled', 'dishonest', 'disorderly', - 'distant', - 'distressed', 'diverse', - 'dominant', 'done', 'double', - 'doubtful', 'dreary', 'due', 'eager', 'east', 'easygoing', 'efficient', - 'elaborate', 'elderly', - 'elegant', 'elite', 'eminent', 'en route', 'en suite', - 'encouraging', 'entire', 'erect', 'ethereal', @@ -149,10 +261,6 @@ module.exports = [ 'excess', 'expert', 'extra', - 'extravagant', - 'exuberant', - 'exultant', - 'fabled', 'faint', 'false', 'far off', @@ -166,84 +274,53 @@ module.exports = [ 'fertile', 'final', 'finite', - 'flagrant', 'fluent', 'foolish', 'for keeps', 'foregoing', 'foreign', 'former', - 'fortunate', - 'frantic', - 'freezing', 'frequent', - 'fretful', 'frozen', - 'gainful', - 'generic', - 'gigantic', - 'gleaming', 'global', 'gone', 'good', - 'graceful', - 'grateful', 'gratis', 'guilty', 'gung ho', 'half', - 'hallowed', 'handy', - 'hanging', 'hard up', - 'harrowing', 'hellish', - 'helpful', 'highfalutin', - 'hispanic', 'honest', - 'hooked', - 'horrific', 'hostile', 'hourly', 'humdrum', 'ideal', - 'ignorant', 'illegal', - 'immediate', 'immense', 'imminent', 'impartial', 'imperfect', 'impolite', - 'important', - 'imported', 'improper', 'in front', 'in situ', 'in vitro', - 'inadequate', - 'inappropriate', - 'inbred', 'incorrect', 'indirect', 'indoor', 'influential', 'initial', - 'innate', 'inner', 'innocent', 'insane', 'inside', 'intact', 'intense', - 'intoxicated', 'ipso facto', - 'irate', - 'irrelevant', - 'jagged', 'junior', - 'justified', 'juvenile', 'kaput', 'kindly', @@ -255,13 +332,9 @@ module.exports = [ 'left', 'legal', 'legendary', - 'legitimate', 'lethal', - 'limited', 'literal', - 'literate', 'loutish', - 'loving', 'lush', 'macabre', 'macho', @@ -274,54 +347,42 @@ module.exports = [ 'many', 'masculine', 'medium', - 'menacing', 'mere', 'miniature', 'minor', - 'mixed', 'mobile', - 'moderate', 'modern', 'moldy', 'monthly', 'moot', 'most', 'multiple', - 'naked', 'nearby', 'necessary', 'neighborly', 'next', 'nightly', - 'nonchalant', 'nondescript', 'nonstop', 'north', 'northern', 'notable', - 'nuanced', - 'obediant', 'obese', 'obscene', 'obscure', - 'observant', 'obsolete', 'off guard', 'offbeat', 'offline', 'ok', 'okay', - 'old fashioned', 'on board', - 'ongoing', 'online', 'open', 'opposite', - 'organic', 'other', 'outdoor', 'outer', - 'outgoing', 'outside', 'oval', 'over', @@ -331,14 +392,11 @@ module.exports = [ 'overweight', 'overwrought', 'parallel', - 'paralleled', 'part-time', 'partial', 'past', - 'peaceful', 'perfect', 'permanent', - 'perplexing', 'perverse', 'petite', 'picayune', @@ -352,14 +410,11 @@ module.exports = [ 'prime', 'prior', 'pristine', - 'private', 'pro', 'probable', 'profuse', 'prominent', 'proper', - 'public', - 'pumped', 'quack', 'rabid', 'racial', @@ -367,70 +422,45 @@ module.exports = [ 'rear', 'rebel', 'recondite', - 'redundant', - 'refreshing', - 'relevant', - 'reluctant', 'republican', - 'resistant', 'resolute', - 'resonant', - 'retarded', 'right-wing', 'right', - 'rightful', 'rival', 'robust', 'rotten', 'routine', 'royal', - 'sacred', 'same', - 'sans serif', - 'scathing', - 'scientific', - 'screeching', 'secondary', 'secret', - 'sedate', 'seemly', 'selfish', 'senior', - 'separate', 'serene', - 'shameful', 'sheer', - 'shocking', 'shut', - 'significant', 'sincere', 'single', 'smug', 'snobbish', - 'so called', 'sole', 'somber', - 'sophisticated', 'sordid', 'sorry', 'south', 'southern', 'soviet', 'spare', - 'specific', - 'spirited', 'splendid', 'spot on', 'squeamish', 'standard', 'steadfast', - 'stereotyped', 'still', 'straight forward', 'straightforward', - 'striped', 'stylish', - 'subdued', 'subsequent', 'sui generis', 'super duper', @@ -438,48 +468,25 @@ module.exports = [ 'superb', 'superior', 'supreme', - 'surprising', - 'symbolic', 'taboo', - 'talented', 'tan', 'teenage', - 'telling', 'temporary', - 'terrific', - 'thoughtful', 'together', 'top', 'torpid', 'trite', - 'troubled', - 'ultimate', 'ultra', 'unable', - 'unappealing', - 'unassuming', - 'unauthorized', - 'unbecoming', - 'unconvincing', - 'undecided', 'under', 'underground', - 'undersized', 'understood', - 'unending', 'uneven', - 'unexpected', 'unfair', 'universal', 'unknown', - 'unprecedented', - 'unrecognized', - 'unregulated', - 'unrelated', 'unruly', 'unsightly', - 'unsupervised', - 'unsuspecting', 'unwieldy', 'unwritten', 'up front', @@ -495,14 +502,11 @@ module.exports = [ 'usual', 'utter', 'uttermost', - 'vacant', 'vagabond', 'vanilla', - 'vibrant', 'vice versa', 'violet', 'volatile', - 'warped', 'wee', 'weekly', 'welcome', @@ -511,10 +515,46 @@ module.exports = [ 'whole', 'wholesale', 'widespread', - 'wistful', 'womanly', 'wooden', 'woozy', 'wound', 'yearly', + // '-ate' adjectives + 'accurate', + 'adequate', + 'appropriate', + 'degenerate', + 'deliberate', + 'delicate', + 'desperate', + 'elaborate', + 'fortunate', + 'immediate', + 'inadequate', + 'inappropriate', + 'innate', + 'irate', + 'legitimate', + 'literate', + 'moderate', + 'private', + 'sedate', + 'separate', + 'ultimate', + + // '-ful' adjectives + 'beautiful', + 'delightful', + 'doubtful', + 'fretful', + 'gainful', + 'graceful', + 'grateful', + 'helpful', + 'peaceful', + 'rightful', + 'shameful', + 'thoughtful', + 'wistful', ] diff --git a/data/adjectives/comparables.js b/data/adjectives/comparables.js index efbc0a827..9eb628b66 100644 --- a/data/adjectives/comparables.js +++ b/data/adjectives/comparables.js @@ -292,6 +292,7 @@ module.exports = [ 'ugly', 'unlikely', 'untidy', + 'untrue', 'upcoming', 'useful', 'vague', @@ -319,7 +320,6 @@ module.exports = [ 'yellow', 'young', 'zany', - // 'close', //these ones can also be verbs, for what it's worth 'bright', diff --git a/data/misc/adverbs.js b/data/misc/adverbs.js index 3ac7dff68..23af2eb2e 100644 --- a/data/misc/adverbs.js +++ b/data/misc/adverbs.js @@ -79,6 +79,7 @@ module.exports = [ 'twice', 'up to', 'upwards of', + 'tiny bit', 'very', 'way', 'yep', diff --git a/data/nouns/singulars.js b/data/nouns/singulars.js index 9da273f7e..77ac7db5d 100644 --- a/data/nouns/singulars.js +++ b/data/nouns/singulars.js @@ -143,4 +143,8 @@ module.exports = [ 'stepmother', 'uncle', 'woman', + + // dates + 'morning', + 'evening', ] diff --git a/data/nouns/uncountables.js b/data/nouns/uncountables.js index a5ce216dc..47933d931 100644 --- a/data/nouns/uncountables.js +++ b/data/nouns/uncountables.js @@ -58,6 +58,8 @@ module.exports = [ 'fourier', 'fowl', 'furniture', + 'gene editing', + 'gene pool', 'genetics', 'gold', 'golf', diff --git a/data/people/femaleNames.js b/data/people/femaleNames.js index 31c7b8ee6..86315740e 100644 --- a/data/people/femaleNames.js +++ b/data/people/femaleNames.js @@ -889,7 +889,6 @@ module.exports = [ 'lianne', 'libbie', 'libby', - 'liberty', 'lidia', 'lila', 'lilia', diff --git a/data/people/honorifics.js b/data/people/honorifics.js index 6b896e1f9..337e2ca1f 100644 --- a/data/people/honorifics.js +++ b/data/people/honorifics.js @@ -36,7 +36,6 @@ module.exports = [ 'rear admiral', 'reverend', 'second lieutenant', - 'secretary', 'sergeant', 'sultan', 'taoiseach', diff --git a/data/people/lastnames.js b/data/people/lastnames.js index 4175c2e79..f8a4a2cee 100644 --- a/data/people/lastnames.js +++ b/data/people/lastnames.js @@ -225,6 +225,7 @@ module.exports = [ 'roosevelt', 'rossi', 'roux', + 'rowling', 'rubio', 'ruiz', 'russo', diff --git a/data/people/maleNames.js b/data/people/maleNames.js index 222c7fd03..716e7c602 100644 --- a/data/people/maleNames.js +++ b/data/people/maleNames.js @@ -900,8 +900,6 @@ module.exports = [ 'valentin', 'valentine', 'vance', - 'vaughn', - 'vernon', 'vicente', 'victor', 'viktor', diff --git a/data/people/people.js b/data/people/people.js index 8bc8de9a7..86d9b1add 100644 --- a/data/people/people.js +++ b/data/people/people.js @@ -13,6 +13,7 @@ module.exports = [ 'hulk hogan', 'kanye west', 'kiefer sutherland', + 'jk rowling', 'kobe bryant', 'lebron james', 'messiaen', diff --git a/data/places/cities.js b/data/places/cities.js index 3d16d188b..89fad422b 100644 --- a/data/places/cities.js +++ b/data/places/cities.js @@ -219,7 +219,9 @@ module.exports = [ 'utrecht', 'valencia', 'vancouver', + 'vaughn', 'varna', + 'vernon', 'vienna', 'vilnius', 'warsaw', diff --git a/data/verbs/infinitives.js b/data/verbs/infinitives.js index 75af085ca..3401fd651 100644 --- a/data/verbs/infinitives.js +++ b/data/verbs/infinitives.js @@ -352,6 +352,7 @@ module.exports = [ 'pile', 'plan', 'play', + 'plead', 'plug', 'plunge', 'point', diff --git a/data/verbs/modals.js b/data/verbs/modals.js index 5e49b23cc..a7bc8d2f1 100644 --- a/data/verbs/modals.js +++ b/data/verbs/modals.js @@ -7,6 +7,7 @@ module.exports = [ 'must', 'ought to', 'ought', + 'oughta', 'shall', 'shant', 'should', diff --git a/package-lock.json b/package-lock.json index 1de6a040d..e42b6c7e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "compromise", - "version": "13.4.0", + "version": "13.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -14,30 +14,25 @@ } }, "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==", + "dev": true }, "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.1.tgz", + "integrity": "sha512-6bGmltqzIJrinwRRdczQsMhruSi9Sqty9Te+/5hudn4Izx/JYRhW1QELpR+CIL0gC/c9A7WroH6FmkDGxmWx3w==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.1", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -55,9 +50,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -74,12 +69,12 @@ } }, "@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", "dev": true, "requires": { - "@babel/types": "^7.11.5", + "@babel/types": "^7.12.1", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -91,9 +86,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -125,9 +120,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -160,9 +155,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -179,41 +174,39 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.4", + "@babel/compat-data": "^7.12.1", + "@babel/helper-validator-option": "^7.12.1", "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", "semver": "^5.5.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { @@ -234,9 +227,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -253,12 +246,12 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -268,9 +261,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -304,9 +297,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -338,9 +331,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -372,9 +365,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -391,12 +384,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -406,9 +399,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -434,27 +427,29 @@ } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "lodash": "^4.17.19" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-validator-identifier": { @@ -464,9 +459,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -498,9 +493,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -540,15 +535,14 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -558,9 +552,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -577,15 +571,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -595,9 +589,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -614,13 +608,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -630,9 +623,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -649,12 +642,12 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -664,9 +657,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -698,9 +691,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -722,6 +715,12 @@ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", @@ -741,9 +740,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -760,14 +759,14 @@ } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", "dev": true, "requires": { "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/helper-validator-identifier": { @@ -777,9 +776,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -815,36 +814,36 @@ } }, "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "version": "7.12.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.2.tgz", + "integrity": "sha512-LMN+SqTiZEonUw4hQA0A3zG8DnN0E1F4K107LbDDUnC+0chML1rvWgsHloC9weB4RmZweE0uhFq0eGX7Nr/PBQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -852,9 +851,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -862,9 +861,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -872,9 +871,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -882,9 +881,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -892,9 +891,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -902,20 +901,20 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -923,33 +922,33 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, @@ -963,9 +962,9 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -1053,41 +1052,41 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-remap-async-to-generator": "^7.12.1" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-validator-identifier": { @@ -1097,9 +1096,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1116,27 +1115,27 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", @@ -1144,52 +1143,52 @@ "@babel/helper-function-name": "^7.10.4", "@babel/helper-optimise-call-expression": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", @@ -1197,18 +1196,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", @@ -1216,156 +1215,164 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -1373,68 +1380,68 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", "dev": true, "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", @@ -1444,55 +1451,52 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-validator-identifier": { @@ -1502,9 +1506,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1534,9 +1538,9 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -1560,9 +1564,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1579,17 +1583,17 @@ } }, "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", + "@babel/generator": "^7.12.1", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/parser": "^7.12.1", + "@babel/types": "^7.12.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" @@ -1602,9 +1606,9 @@ "dev": true }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -1631,6 +1635,25 @@ "to-fast-properties": "^2.0.0" } }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, "@rollup/plugin-alias": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz", @@ -1641,9 +1664,9 @@ } }, "@rollup/plugin-commonjs": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz", - "integrity": "sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -1697,6 +1720,18 @@ "picomatch": "^2.2.2" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1718,6 +1753,25 @@ "@types/node": "*" } }, + "agent-base": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "amble": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/amble/-/amble-1.1.0.tgz", @@ -1728,6 +1782,12 @@ "colorette": "^1.1.0" } }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1747,6 +1807,36 @@ "picomatch": "^2.0.4" } }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, "array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", @@ -1803,14 +1893,14 @@ } }, "browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", + "caniuse-lite": "^1.0.30001135", + "electron-to-chromium": "^1.3.571", + "escalade": "^3.1.0", "node-releases": "^1.1.61" } }, @@ -1832,10 +1922,28 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "caniuse-lite": { - "version": "1.0.30001125", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", - "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", + "version": "1.0.30001148", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz", + "integrity": "sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==", "dev": true }, "chalk": { @@ -1865,6 +1973,36 @@ "readdirp": "~3.4.0" } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "codecov": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.0.tgz", + "integrity": "sha512-7E/S7hmq2CJvCMBMu+aRACO9jxQX1HJug/M3ub8+t84R+5Ai2T5sFMxS3W8P41m2A63+VSAAL4U0aBlqZXkJPw==", + "dev": true, + "requires": { + "argv": "0.0.2", + "ignore-walk": "3.0.3", + "js-yaml": "3.14.0", + "teeny-request": "7.0.1", + "urlgrey": "0.4.4" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1937,6 +2075,17 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -1946,6 +2095,12 @@ "ms": "^2.1.1" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, "deep-equal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.3.tgz", @@ -1982,6 +2137,15 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2018,9 +2182,15 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.564", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz", - "integrity": "sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg==", + "version": "1.3.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz", + "integrity": "sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "es-abstract": { @@ -2076,10 +2246,16 @@ "is-symbol": "^1.0.2" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { @@ -2088,6 +2264,12 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -2109,6 +2291,27 @@ "to-regex-range": "^5.0.1" } }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -2124,6 +2327,22 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "fromentries": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", + "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2149,6 +2368,18 @@ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -2178,6 +2409,12 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2199,6 +2436,64 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "hasha": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", + "integrity": "sha512-x15jnRSHTi3VmH+oHtVb9kgU/HuKOK8mjK8iCL3dPQXh4YJlUb9YSI8ZLiiqLAIvY2wuDIlZYZppy8vB2XISkQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2221,15 +2516,6 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -2275,6 +2561,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -2332,6 +2624,12 @@ "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", "dev": true }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, "is-string": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", @@ -2359,6 +2657,12 @@ "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -2371,21 +2675,140 @@ "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "jest-worker": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", - "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" }, "dependencies": { "has-flag": { @@ -2411,6 +2834,16 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -2426,19 +2859,13 @@ "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "leven": "^3.1.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -2447,14 +2874,11 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true }, "magic-string": { "version": "0.25.7", @@ -2465,6 +2889,23 @@ "sourcemap-codec": "^1.4.4" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2492,10 +2933,25 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.63", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.63.tgz", + "integrity": "sha512-ukW3iCfQaoxJkSPN+iK7KznTeqDGVJatAEuXsJERYHa9tn/KaT5lBdIyxQjLEVTzSkyjJEuQ17/vaEjrOauDkg==", "dev": true }, "normalize-path": { @@ -2504,6 +2960,41 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + } + }, "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", @@ -2547,12 +3038,69 @@ "wrappy": "1" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -2565,6 +3113,30 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -2580,6 +3152,21 @@ "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", "dev": true }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, "readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", @@ -2639,9 +3226,9 @@ } }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -2675,6 +3262,27 @@ } } }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -2684,6 +3292,12 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resumer": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", @@ -2693,10 +3307,19 @@ "through": "~2.3.4" } }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rollup": { - "version": "2.26.11", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.11.tgz", - "integrity": "sha512-xyfxxhsE6hW57xhfL1I+ixH8l2bdoIMaAecdQiWF3N7IgJEMu99JG+daBiSZQjnBpzFxa0/xZm+3pbCdAQehHw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.31.0.tgz", + "integrity": "sha512-0d8S3XwEZ7aCP910/9SjnelgLvC+ZXziouVolzxPOM1zvKkHioGkWGJIWmlOULlmvB8BZ6S0wrgsT4yMz0eyMg==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -2768,6 +3391,27 @@ "randombytes": "^2.1.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "shelljs": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", @@ -2789,6 +3433,12 @@ "object-inspect": "^1.7.0" } }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2825,6 +3475,20 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, "split": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/split/-/split-1.0.0.tgz", @@ -2834,6 +3498,32 @@ "through": "2" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "string.prototype.trim": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", @@ -2887,6 +3577,36 @@ "es-abstract": "^1.17.5" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2897,9 +3617,9 @@ } }, "tap-dancer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", - "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.0.tgz", + "integrity": "sha512-ivZ+x++JKBbMQP5Jp7xfT21HsGJ+AeNMV4grlREyowcgDilFiY7b+nmDwffA+iagItqth3W+9UW4DBHsak3P8Q==", "dev": true, "requires": { "chalk": "2.4.2", @@ -2916,38 +3636,6 @@ "readable-stream": "2.2.9", "split": "1.0.0", "trim": "0.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true, - "requires": { - "buffer-shims": "~1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "tape": { @@ -2983,6 +3671,27 @@ } } }, + "teeny-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz", + "integrity": "sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "dev": true + } + } + }, "terser": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz", @@ -3002,6 +3711,17 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3029,6 +3749,21 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -3057,12 +3792,33 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "which-boxed-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", @@ -3088,6 +3844,12 @@ "is-weakset": "^2.0.1" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "which-typed-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", @@ -3102,11 +3864,96 @@ "is-typed-array": "^1.1.3" } }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/package.json b/package.json index 1bd31f7f1..1efa59194 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Spencer Kelly (http://spencermounta.in)", "name": "compromise", "description": "modest natural language processing", - "version": "13.5.0", + "version": "13.6.0", "main": "./builds/compromise.js", "unpkg": "./builds/compromise.min.js", "module": "./builds/compromise.mjs", @@ -25,10 +25,12 @@ "test:spec": "tape \"./tests/**/*.test.js\" | tap-spec", "test:types": "ts-node ./scripts/test/types.ts | tap-dancer", "test:stress": "node ./scripts/test/stress.js", + "test:coverage": "nyc -r text-summary -n 'src/**/*' -n 'plugins/**/*' npm run test", + "coverage:html": "nyc --reporter=html tape \"./tests/**/*.test.js\" | tap-dancer --color always", + "coverage": "nyc -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run test", + "codecov": "npm run coverage && codecov -t 15039ad1-b495-48cd-b4a0-bcf124c9b318", "perf": "node ./scripts/test/speed/index.js", "perf:build": "node ./scripts/test/speed/build-speed.js", - "coverage": "node ./scripts/test/coverage.js", - "coverage:html": "nyc --reporter=html tape \"./tests/**/*.test.js\" | tap-dancer --color always", "lint": "eslint ./src/ && eslint ./plugins/**/src/", "watch": "amble ./scratch.js", "build:all": "node ./scripts/build/build-all.js && npm run build --silent", @@ -54,20 +56,22 @@ "efrt-unpack": "2.2.0" }, "devDependencies": { - "amble": "1.1.0", - "efrt": "2.2.2", - "shelljs": "0.8.4", - "@babel/core": "7.11.6", - "@babel/preset-env": "7.11.5", - "rollup": "2.26.11", + "@babel/core": "7.12.1", + "@babel/preset-env": "7.12.1", "@rollup/plugin-alias": "3.1.1", - "@rollup/plugin-commonjs": "15.0.0", + "@rollup/plugin-commonjs": "15.1.0", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-node-resolve": "9.0.0", + "amble": "1.1.0", + "codecov": "3.8.0", + "efrt": "2.2.2", + "nyc": "^15.1.0", + "rollup": "2.31.0", "rollup-plugin-babel": "4.4.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.2.0", + "shelljs": "0.8.4", + "tap-dancer": "0.3.0", "tape": "5.0.1" }, "eslintIgnore": [ diff --git a/plugins/dates/builds/compromise-dates.js b/plugins/dates/builds/compromise-dates.js index 6c99d2a51..3fa4246c4 100644 --- a/plugins/dates/builds/compromise-dates.js +++ b/plugins/dates/builds/compromise-dates.js @@ -1,4 +1,4 @@ -/* compromise-dates 1.1.0 MIT */ +/* compromise-dates 1.2.0 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -298,7 +298,9 @@ var values = function values(doc) { // a year ago - doc.match('!once [a] #Duration', 0).replaceWith('1').tag('Cardinal', here); + if (!doc.has('once [a] #Duration')) { + doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here); + } if (doc.has('#Value')) { //june 5 to 7th @@ -500,17 +502,19 @@ if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) { - d.match('(minutes|seconds|weeks|hours|days|months)').unTag('#Date', 'log-hours'); + d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours'); } // about thanksgiving if (d.has('about #Holiday')) { d.match('about').unTag('#Date', 'about-thanksgiving'); - } // dangling date-chunks + } // a month from now + + + d.match('(from|by|before) now').unTag('Time'); // dangling date-chunks // if (d.has('!#Date (in|of|by|for) !#Date')) { // d.unTag('Date', 'dangling-date') // } - } return doc; @@ -5418,19 +5422,37 @@ _classCallCheck(this, WeekDay); _this5 = _super5.call(this, input, unit, context); - _this5.unit = 'week'; - _this5.d = spacetime$2(context.today, context.timezone); - _this5.d = _this5.d.day(input); - _this5.weekDay = _this5.d.dayName(); //assume a wednesday in the future + _this5.unit = 'week'; // is the input just a weekday? + + if (typeof input === 'string') { + _this5.d = spacetime$2(context.today, context.timezone); + _this5.d = _this5.d.day(input); // assume a wednesday in the future - if (_this5.d.date() < spacetime$2.now(context.timezone).date()) { - _this5.d = _this5.d.add(7, 'days'); + if (_this5.d.isBefore(context.today)) { + _this5.d = _this5.d.add(7, 'days'); + } + } else { + _this5.d = input; } + _this5.weekDay = _this5.d.dayName(); return _this5; } _createClass(WeekDay, [{ + key: "clone", + value: function clone() { + //overloaded method + return new WeekDay(this.d, this.unit, this.context); + } + }, { + key: "end", + value: function end() { + //overloaded method + this.d = this.d.endOf('day'); + return this; + } + }, { key: "next", value: function next() { this.d = this.d.add(7, 'days'); @@ -5524,7 +5546,7 @@ var namedUnit = function namedUnit(doc, context) { //this month, last quarter, next year - var m = doc.match('(weekday|week|month|quarter|season|year)'); + var m = doc.match('^(weekday|week|month|quarter|season|year)$'); if (m.found === true) { var str = m.lastTerm().text('reduced'); @@ -5542,7 +5564,7 @@ } //try this version - 'next friday, last thursday' - m = doc.match('(monday|tuesday|wednesday|thursday|friday|saturday|sunday)'); + m = doc.match('^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$'); if (m.found === true) { var _str = m.lastTerm().text('reduced'); @@ -6204,17 +6226,15 @@ d = d || steps.holiday(doc, context); // 'this june 2nd' - d = d || steps.explicit(doc, context); - - if ((typeof process === "undefined" ? "undefined" : _typeof(process)) !== undefined && process && process.env.DEBUG) { - console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-'); - console.log(" shift: ".concat(JSON.stringify(shift))); - console.log(" rel: ".concat(rel || '-')); - console.log(" time: ".concat(time || '-')); - console.log("\n str: '".concat(doc.text(), "'")); - console.log('\n ', d); - console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n'); - } + d = d || steps.explicit(doc, context); // if (typeof process !== undefined && process && process.env.DEBUG) { + // console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-') + // console.log(` shift: ${JSON.stringify(shift)}`) + // console.log(` rel: ${rel || '-'}`) + // console.log(` time: ${time || '-'}`) + // console.log(`\n str: '${doc.text()}'`) + // console.log('\n ', d) + // console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n') + // } if (!d) { return null; @@ -6438,9 +6458,17 @@ var d = _03ParseDate(doc, context); + + if (d) { + return { + start: d, + end: d.clone().end() + }; + } + return { - start: d, - end: d.clone().end() + start: null, + end: null }; }; diff --git a/plugins/dates/builds/compromise-dates.js.map b/plugins/dates/builds/compromise-dates.js.map index 0e733d230..ec72db51c 100644 --- a/plugins/dates/builds/compromise-dates.js.map +++ b/plugins/dates/builds/compromise-dates.js.map @@ -1 +1 @@ -{"version":3,"file":"compromise-dates.js","sources":["../src/01-tag/00-basic.js","../src/01-tag/01-values.js","../src/01-tag/02-dates.js","../src/01-tag/03-sections.js","../src/01-tag/04-time.js","../src/01-tag/05-shifts.js","../src/01-tag/06-fixup.js","../src/01-tag/index.js","../src/data/_tags.js","../node_modules/spacetime/builds/spacetime.mjs","../src/data/_timezones.js","../src/data/words/dates.js","../src/data/words/durations.js","../src/data/words/holidays.js","../src/data/words/times.js","../src/data/words/index.js","../src/02-getDate/00-normalize.js","../src/03-parseDate/sections/01-shift.js","../src/03-parseDate/sections/02-time.js","../src/03-parseDate/sections/03-relative.js","../src/03-parseDate/sections/04-timezone.js","../src/03-parseDate/Unit.js","../src/03-parseDate/_units.js","../src/03-parseDate/steps/00-implied.js","../src/03-parseDate/steps/01-duration.js","../node_modules/spacetime-holiday/builds/spacetime-holiday.js","../src/03-parseDate/steps/02-holidays.js","../src/03-parseDate/steps/03-explicit.js","../src/03-parseDate/index.js","../src/02-getDate/01-parse-range.js","../src/02-getDate/index.js","../src/data/_abbrevs.js","../src/methods.js","../src/index.js"],"sourcesContent":["//ambiguous 'may' and 'march'\nconst preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning)' //2\nconst seasons = '(spring|summer|winter|fall|autumn)'\n\n//ensure a year is approximately typical for common years\n//please change in one thousand years\nconst tagYear = (m, reason) => {\n if (m.found !== true) {\n return\n }\n let term = m.termList()[0]\n if (term) {\n let num = parseInt(term.clean, 10)\n if (num && num > 1000 && num < 3000) {\n m.tag('Year', reason)\n }\n }\n}\n//same, but for less-confident values\nconst tagYearSafe = (m, reason) => {\n if (m.found !== true) {\n return\n }\n let term = m.termList()[0]\n if (term) {\n let num = parseInt(term.clean, 10)\n if (num && num > 1900 && num < 2030) {\n m.tag('Year', reason)\n }\n }\n}\n\nconst fixDates = function (doc) {\n doc.match('in the (night|evening|morning|afternoon|day|daytime)').tag('Time', 'in-the-night')\n doc.match('(#Value|#Time) (am|pm)').tag('Time', 'value-ampm')\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #Date+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //june 7\n val.match('(#WeekDay|#Month) #Value').ifNo('#Money').tag('Date', 'date-value')\n\n //7 june\n val.match('#Value (#WeekDay|#Month)').ifNo('#Money').tag('Date', 'value-date')\n\n //may twenty five\n val.match('#TextValue #TextValue').if('#Date').tag('#Date', 'textvalue-date')\n\n //eg 'year'\n let duration = val.if('#Duration')\n if (duration.found === true) {\n //for 4 months\n duration.match('for #Value #Duration').tag('Date', 'for-x-duration')\n //two days before\n duration.match('#Value #Duration #Conjunction').tag('Date', 'val-duration-conjunction')\n //for four days\n duration.match(`${preps}? #Value #Duration`).tag('Date', 'value-duration')\n //two years old\n duration.match('#Value #Duration old').unTag('Date', 'val-years-old')\n }\n }\n\n //seasons\n let season = doc.if(seasons)\n if (season.found === true) {\n season.match(`${preps}? ${thisNext} ${seasons}`).tag('Date', 'thisNext-season')\n season.match(`the? ${sections} of ${seasons}`).tag('Date', 'section-season')\n season.match(`${seasons} ${preps}? #Cardinal`).tag('Date', 'season-year')\n }\n\n //rest-dates\n let date = doc.if('#Date')\n if (date.found === true) {\n //june the 5th\n date.match('#Date the? #Ordinal').tag('Date', 'correction')\n //last month\n date.match(`${thisNext} #Date`).tag('Date', 'thisNext')\n //by 5 March\n date.match('due? (by|before|after|until) #Date').tag('Date', 'by')\n //next feb\n date.match('(last|next|this|previous|current|upcoming|coming|the) #Date').tag('Date', 'next-feb')\n //start of june\n date.match(`the? ${sections} of #Date`).tag('Date', 'section-of')\n //fifth week in 1998\n date.match('#Ordinal #Duration in #Date').tag('Date', 'duration-in')\n //early in june\n date.match('(early|late) (at|in)? the? #Date').tag('Time', 'early-evening')\n //tomorrow before 3\n date.match('#Date (by|before|after|at|@|about) #Cardinal').not('^#Date').tag('Time', 'date-before-Cardinal')\n //saturday am\n date.match('#Date [(am|pm)]', 0).unTag('Verb').unTag('Copula').tag('Time', 'date-am')\n //feb to june\n date.match('#Date (#Preposition|to) #Date').ifNo('#Duration').tag('Date', 'date-prep-date')\n }\n\n //year/cardinal tagging\n let cardinal = doc.if('#Cardinal')\n if (cardinal.found === true) {\n let v = cardinal.match(`#Date #Value [#Cardinal]`, 0)\n tagYear(v, 'date-value-year')\n //scoops up a bunch\n v = cardinal.match(`#Date+ [#Cardinal]`, 0)\n tagYear(v, 'date-year')\n //feb 8 2018\n v = cardinal.match(`#Month #Value [#Cardinal]`, 0)\n tagYear(v, 'month-value-year')\n //feb 8 to 10th 2018\n v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0)\n tagYear(v, 'month-range-year')\n //in 1998\n v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year) [#Cardinal]`, 0)\n tagYear(v, 'in-year')\n //q2 2009\n v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //2nd quarter 2009\n v = cardinal.match('#Ordinal quarter [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //in the year 1998\n v = cardinal.match('the year [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //it was 1998\n v = cardinal.match('it (is|was) [#Cardinal]', 0)\n tagYearSafe(v, 'in-year')\n }\n\n let time = doc.if('#Time')\n if (time.found === true) {\n //by 6pm\n time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time')\n //7 7pm\n time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time')\n //2pm est\n time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone')\n //6pm est\n time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr')\n }\n\n return doc\n}\nmodule.exports = fixDates\n","const here = 'date-values'\n//\nconst values = function (doc) {\n // a year ago\n doc.match('!once [a] #Duration', 0).replaceWith('1').tag('Cardinal', here)\n if (doc.has('#Value')) {\n //june 5 to 7th\n doc.match('#Month #Value to #Value of? #Year?').tag('Date', here)\n //5 to 7th june\n doc.match('#Value to #Value of? #Month #Year?').tag('Date', here)\n //third week of may\n doc.match('#Value #Duration of #Date').tag('Date', here)\n //two days after\n doc.match('#Value+ #Duration (after|before|into|later|afterwards|ago)?').tag('Date', here)\n //two days\n doc.match('#Value #Date').tag('Date', here)\n //june 5th\n doc.match('#Date #Value').tag('Date', here)\n //tuesday at 5\n doc.match('#Date #Preposition #Value').tag('Date', here)\n //tomorrow before 3\n doc.match('#Date (after|before|during|on|in) #Value').tag('Date', here)\n //a year and a half\n doc.match('#Value (year|month|week|day) and a half').tag('Date', here)\n //5 and a half years\n doc.match('#Value and a half (years|months|weeks|days)').tag('Date', here)\n //on the fifth\n doc.match('on the #Ordinal').tag('Date', here)\n }\n return doc\n}\nmodule.exports = values\n","const here = 'date-tagger'\n//\nconst dateTagger = function(doc) {\n\n doc.match('(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)').match('#Noun').tag('Season', here)\n doc.match('(q1|q2|q3|q4)').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) quarter').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) season').tag('Season', here)\n\n if (doc.has('#Date')) {\n //friday to sunday\n doc.match('#Date #Preposition #Date').tag('Date', here);\n //once a day..\n doc.match('(once|twice) (a|an|each) #Date').tag('Date', here);\n //TODO:fixme\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here);\n //tuesday\n doc.match('#Date+').tag('Date', here);\n //by June\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here);\n //a year after..\n doc.match('a #Duration').tag('Date', here);\n //between x and y\n doc.match('(between|from) #Date').tag('Date', here);\n doc.match('(to|until|upto) #Date').tag('Date', here);\n doc.match('#Date and #Date').tag('Date', here);\n //during this june\n doc.match('(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)').tag('Date', here);\n //day after next\n doc.match('the? #Date after next one?').tag('Date', here);\n //approximately...\n doc.match('(about|approx|approximately|around) #Date').tag('Date', here);\n }\n return doc\n}\nmodule.exports = dateTagger\n","const here = 'section-tagger'\n//\nconst sectionTagger = function(doc) {\n if (doc.has('#Date')) {\n // //next september\n doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here);\n //starting this june\n doc.match('(starting|beginning|ending) #Date').tag('Date', here);\n //start of june\n doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here);\n //this coming june\n doc.match('(the|this) #Date').tag('Date', here);\n }\n return doc\n}\nmodule.exports = sectionTagger\n","const here = 'time-tagger'\n\n//\nconst timeTagger = function (doc) {\n // quarter to seven (not march 5 to 7)\n if (doc.has('#Cardinal') && !doc.has('#Month')) {\n doc.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal').tag('Time', here)\n }\n //timezone\n if (doc.has('#Date')) {\n //eastern daylight time\n doc.match('#Noun (standard|daylight|central|mountain)? time').tag('Timezone', here)\n //utc+5\n doc.match('/^utc[+-][0-9]/').tag('Timezone', here)\n doc.match('/^gmt[+-][0-9]/').tag('Timezone', here)\n\n doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here)\n\n // https://raw.githubusercontent.com/davispuh/TimezoneParser/master/data/abbreviations.yml\n // let abbr =\n // '(acdt|acst|ace|dmt|ist|tse|addt|adt|aedt|aest|ahdt|ahst|akdt|akst|amt|nst|apt|awt|gmt|awdt|awst|bdst|bst|bdt|nwt|bmt|wet|bost|cddt|cdt|cet|cmt|cpt|cst|cwt|chst|gst|eat|eddt|edt|eest|eet|emt|ept|ewt|est|ffmt|fmt|hdt|hst|hkst|hkt|hmt|iddt|idt|jmt|imt|jdt|jst|kdt|kst|kmt|lst|mddt|mdst|msd|msk|mdt|mmt|mpt|pdt|pst|mst|mwt|nddt|ndt|npt|nzdt|nzmt|nzst|pddt|pkst|pkt|plmt|pmmt|pmt|ppmt|ppt|pwt|qmt|rmt|sast|sdmt|set|sjmt|smt|sst|tbmt|tmt|utc|wast|wemt|wib|wit|wita|wmt|yddt|ydt|ypt|ywt|yst)'\n // doc.match(abbr).tag('Timezone', here)\n }\n return doc\n}\nmodule.exports = timeTagger\n","const here = 'shift-tagger'\n//\nconst shiftTagger = function (doc) {\n if (doc.has('#Date')) {\n //'two days before'/ 'nine weeks frow now'\n doc.match('#Cardinal #Duration (before|after|ago|from)').tag('#DateShift', here)\n // in two weeks\n doc.match('in #Cardinal #Duration').tag('#DateShift', here)\n //two weeks and three days before\n doc.match('#Cardinal #Duration and? #DateShift').tag('#DateShift', here)\n doc.match('#DateShift and #Cardinal #Duration').tag('#DateShift', here)\n // doc.match('#Cardinal #Duration and? #DateShift').tag('#DateShift', here)\n }\n return doc\n}\nmodule.exports = shiftTagger\n","const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n //fixups\n if (doc.has('#Date')) {\n //first day by monday\n let oops = doc.match('#Date+ by #Date+')\n if (oops.found && !oops.has('^due')) {\n oops.match('^#Date+').unTag('Date', 'by-monday')\n }\n\n let d = doc.match('#Date+')\n //'spa day'\n d.match('^day$').unTag('Date', 'spa-day')\n // tomorrow's meeting\n d.match('(in|of|by|for)? (#Possessive && #Date)').unTag('Date', 'tomorrows meeting')\n\n let knownDate = '(yesterday|today|tomorrow)'\n if (d.has(knownDate)) {\n //yesterday 7\n d.match(`${knownDate} [#Value]$`).unTag('Date', 'yesterday-7')\n //7 yesterday\n d.match(`^[#Value] ${knownDate}$`, 0).unTag('Date', '7 yesterday')\n //friday yesterday\n d.match(`#WeekDay+ ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'fri-yesterday')\n\n // yesterday yesterday\n // d.match(`${knownDate}+ ${knownDate}$`)\n // .unTag('Date')\n // .lastTerm()\n // .tag('Date', here)\n d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday')\n }\n //tomorrow on 5\n d.match(`on #Cardinal$`).unTag('Date', here)\n //this tomorrow\n d.match(`this tomorrow`).terms(0).unTag('Date', 'this-tomorrow')\n //q2 2019\n d.match(`(q1|q2|q3|q4) #Year`).tag('Date', here)\n //5 tuesday\n // d.match(`^#Value #WeekDay`).terms(0).unTag('Date');\n //5 next week\n d.match(`^#Value (this|next|last)`).terms(0).unTag('Date', here)\n\n if (d.has('(last|this|next)')) {\n //this month 7\n d.match(`(last|this|next) #Duration #Value`).terms(2).unTag('Date', here)\n //7 this month\n d.match(`!#Month #Value (last|this|next) #Date`).terms(0).unTag('Date', here)\n }\n //january 5 5\n if (d.has('(#Year|#Time|#TextValue|#NumberRange)') === false) {\n d.match('(#Month|#WeekDay) #Value #Value').terms(2).unTag('Date', here)\n }\n //between june\n if (d.has('^between') && !d.has('and .')) {\n d.unTag('Date', here)\n }\n //june june\n if (d.has('#Month #Month') && !d.has('@hasHyphen') && !d.has('@hasComma')) {\n d.match('#Month').lastTerm().unTag('Date', 'month-month')\n }\n // log the hours\n if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n d.match('(minutes|seconds|weeks|hours|days|months)').unTag('#Date', 'log-hours')\n }\n // about thanksgiving\n if (d.has('about #Holiday')) {\n d.match('about').unTag('#Date', 'about-thanksgiving')\n }\n // dangling date-chunks\n // if (d.has('!#Date (in|of|by|for) !#Date')) {\n // d.unTag('Date', 'dangling-date')\n // }\n }\n return doc\n}\nmodule.exports = fixUp\n","const methods = [\n require('./00-basic'),\n require('./01-values'),\n require('./02-dates'),\n require('./03-sections'),\n require('./04-time'),\n require('./05-shifts'),\n require('./06-fixup'),\n]\n// run each of the taggers\nconst tagDate = function (doc) {\n methods.forEach((fn) => fn(doc))\n return doc\n}\nmodule.exports = tagDate\n","module.exports = {\n FinancialQuarter: {\n isA: 'Date',\n },\n // 'summer'\n Season: {\n isA: 'Date',\n },\n // '1982'\n Year: {\n isA: ['Date'],\n notA: 'RomanNumeral',\n },\n // 'months'\n Duration: {\n isA: ['Date', 'Noun'],\n },\n // 'easter'\n Holiday: {\n isA: ['Date', 'Noun'],\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n },\n // 'two weeks before'\n DateShift: {\n isA: ['Date'],\n },\n}\n","/* spencermountain/spacetime 6.6.3 Apache 2.0 */\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day') {\n return 'date';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var absOffset = Math.abs(offset);\n var sign = offset > 0 ? '+' : '-';\n return \"\".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, \"00\");\n };\n});\nvar fns_1 = fns.isLeapYear;\nvar fns_2 = fns.isDate;\nvar fns_3 = fns.isArray;\nvar fns_4 = fns.isObject;\nvar fns_5 = fns.zeroPad;\nvar fns_6 = fns.titleCase;\nvar fns_7 = fns.ordinal;\nvar fns_8 = fns.toCardinal;\nvar fns_9 = fns.normalize;\nvar fns_10 = fns.getEpoch;\nvar fns_11 = fns.beADate;\nvar fns_12 = fns.formatTimezone;\n\nvar zeroPad = fns.zeroPad;\n\nvar serialize = function serialize(d) {\n return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours());\n}; // a timezone will begin with a specific offset in january\n// then some will switch to something else between november-march\n\n\nvar shouldChange = function shouldChange(epoch, start, end, defaultOffset) {\n //note: this has a cray order-of-operations issue\n //we can't get the date, without knowing the timezone, and vice-versa\n //it's possible that we can miss a dst-change by a few hours.\n var d = new Date(epoch); //(try to mediate this a little?)\n\n var bias = d.getTimezoneOffset() || 0;\n var shift = bias + defaultOffset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n\n d = new Date(epoch + shift);\n var current = serialize(d); //eg. is it after ~november?\n\n if (current >= start) {\n //eg. is it before ~march~ too?\n if (current < end) {\n return true;\n }\n }\n\n return false;\n};\n\nvar summerTime = shouldChange;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/05:03->10/04:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s\": \"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west\",\n\t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n\t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n\t\"5.75|n\": \"2/kathmandu,2/katmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/21:00->09/20:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/29:03->10/25:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\n\t\"3|n|03/29:02->10/25:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/29:00->10/24:24\": \"2/beirut\",\n\t\"3|n|03/27:02->10/25:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/27:00->10/31:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/27:00->10/30:01\": \"2/amman\",\n\t\"3|n|03/27:00->10/29:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\n\t\"2|s|03/29:02->10/25:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/29:02->10/25:03\": \"0/ceuta,arctic/longyearbyen,3/jan_mayen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n\t\"1|s\": \"0/kinshasa,0/luanda\",\n\t\"1|n|04/19:03->05/31:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/29:01->10/25:02\": \"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n\t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/05:04->09/27:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/05:03->09/27:02\": \"12/mcmurdo,12/south_pole,11/auckland\",\n\t\"12|s|01/12:03->11/08:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/05:03->04/05:02\": \"11/chatham\",\n\t\"11|s\": \"12/macquarie,11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n\t\"11.5|n|04/05:03->10/04:02\": \"11/norfolk\",\n\t\"10|s|04/05:03->10/04:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n\t\"10.5|s|04/05:01->10/04:02\": \"4/lhi,4/lord_howe\",\n\t\"0|n|03/29:00->10/25:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n\t\"-9|n|03/08:02->11/01:02\": \"1/adak,1/atka\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/08:02->11/01:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/08:02->11/01:02\": \"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/hermosillo,1/phoenix\",\n\t\"-6|s|04/04:22->09/05:22\": \"7/easterisland,11/easter\",\n\t\"-6|n|04/05:02->10/25:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/08:02->11/01:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n\t\"-5|s\": \"1/lima,1/rio_branco,5/acre\",\n\t\"-5|n|04/05:02->10/25:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n|03/08:02->11/01:02\": \"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n\t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/04:24->09/06:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/21:24->10/04:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n|03/08:02->11/01:02\": \"1/detroit,1/fort_wayne,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,6/eastern\",\n\t\"-4|n|03/08:00->11/01:01\": \"1/havana\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n\t\"-3|n|03/08:02->11/01:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n\t\"-2|s\": \"5/denoronha\",\n\t\"-2|n|03/28:22->10/24:23\": \"1/godthab\",\n\t\"-2|n|03/08:02->11/01:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia\",\n\t\"-2.5|n|03/08:02->11/01:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\t'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //(sorry)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n} // console.log(all)\n// console.log(Object.keys(all).length)\n\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num > -13 && num < 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n var tz = str.trim();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\n if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n tz = split[0] + '/' + split[1];\n }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //incriment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset$1 = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar isLeapYear = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months$1 = months.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1$1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{1,2})[\\-\\/]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = arr[3] || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n var isNegative = offset < 0;\n var minute = '00'; //handle 5.5 → '5:30'\n\n if (Math.abs(offset % 1) === 0.5) {\n minute = '30';\n\n if (offset >= 0) {\n offset = Math.floor(offset);\n } else {\n offset = Math.ceil(offset);\n }\n }\n\n if (isNegative) {\n //handle negative sign\n offset *= -1;\n offset = fns.zeroPad(offset, 2);\n offset = '-' + offset;\n } else {\n offset = fns.zeroPad(offset, 2);\n offset = '+' + offset;\n }\n\n offset = offset + ':' + minute; //'Z' means 00\n\n if (offset === '+00:00') {\n offset = 'Z';\n }\n\n return offset;\n};\n\nvar _offset = isoOffset;\n\nvar format = {\n day: function day(s) {\n return fns.titleCase(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return fns.titleCase(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return fns.titleCase(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return fns.titleCase(months[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(fns.titleCase(months[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(fns.titleCase(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = fns.titleCase(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n return String(format[fmt](s));\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4);\n\nvar unixFmt = function unixFmt(s, str) {\n var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one.\n\n var arr = [chars[0]];\n var quoteOn = false;\n\n for (var i = 1; i < chars.length; i += 1) {\n //support quoted substrings\n if (chars[i] === \"'\") {\n quoteOn = !quoteOn; //support '', meaning one tick\n\n if (quoteOn === true && chars[i + 1] && chars[i + 1] === \"'\") {\n quoteOn = true;\n } else {\n continue;\n }\n } //merge it with the last one\n\n\n if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) {\n arr[arr.length - 1] += chars[i];\n } else {\n arr.push(chars[i]);\n }\n }\n\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$1 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$1.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff$1 = main;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$2 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$2.date = units$2.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n return units$2[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$2.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n s = units$2[unit](s);\n s = s.add(1, unit);\n s = s.subtract(1, 'milliseconds');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff(d, unit) {\n return diff$1(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units$3.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods.inDST = methods.isDST;\nmethods.round = methods.nearest;\nmethods.each = methods.every;\nvar methods_1 = methods;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order.indexOf(unit);\n var arr = order.slice(n, order.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift;\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2})(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[3] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[3] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n }\n\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(0);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$1 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$1;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.date(s, num);\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff * 24, 'hours'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$3 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //don't go into last-year\n\n if (s.monthName() === 'december') {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december') {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i < 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$3;\n\nvar methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods$4.milliseconds = methods$4.millisecond;\nmethods$4.seconds = methods$4.second;\nmethods$4.minutes = methods$4.minute;\nmethods$4.hours = methods$4.hour;\nmethods$4.hour24 = methods$4.hour;\nmethods$4.h12 = methods$4.hour12;\nmethods$4.h24 = methods$4.hour24;\nmethods$4.days = methods$4.day;\n\nvar addMethods = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods$4).forEach(function (k) {\n Space.prototype[k] = methods$4[k];\n });\n};\n\nvar query = addMethods;\n\nvar isLeapYear$2 = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear$2(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order$1.slice(0, 1),\n minute: order$1.slice(0, 2),\n quarterhour: order$1.slice(0, 2),\n hour: order$1.slice(0, 3),\n date: order$1.slice(0, 4),\n month: order$1.slice(0, 4),\n quarter: order$1.slice(0, 4),\n season: order$1.slice(0, 4),\n year: order$1,\n decade: order$1,\n century: order$1\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit); //move forward by the estimated milliseconds (rough)\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } //ensure year has changed (leap-years)\n else if (unit === 'year' && s.year() === old.year()) {\n s.epoch += milliseconds.week;\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n walk_1(s, want);\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$1;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var a = this;\n\n if (!unit) {\n return null;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, '');\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$3;\n\nvar addMethods$4 = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months.set(data.months);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods$4;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.6.3';\n\nvar main$1 = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain$1.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain$1.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain$1.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain$1.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain$1.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n}; //find tz by time\n\n\nmain$1.whereIts = whereIts_1;\nmain$1.version = _version; //aliases:\n\nmain$1.plugin = main$1.extend;\nvar src = main$1;\n\nexport default src;\n","// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n// generated humbly from https://github.com/spencermountain/spacetime-informal\nconst spacetime = require('spacetime')\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n //europe\n 'british summer time': europe + 'London',\n bst: europe + 'London',\n 'british time': europe + 'London',\n 'britain time': europe + 'London',\n 'irish summer time': europe + 'Dublin',\n 'irish time': europe + 'Dublin',\n ireland: europe + 'Dublin',\n 'central european time': europe + 'Berlin',\n cet: europe + 'Berlin',\n 'central european summer time': europe + 'Berlin',\n cest: europe + 'Berlin',\n 'central europe': europe + 'Berlin',\n 'eastern european time': europe + 'Riga',\n eet: europe + 'Riga',\n 'eastern european summer time': europe + 'Riga',\n eest: europe + 'Riga',\n 'eastern europe time': europe + 'Riga',\n 'western european time': europe + 'Lisbon',\n // wet: europe+'Lisbon',\n 'western european summer time': europe + 'Lisbon',\n // west: europe+'Lisbon',\n 'western europe': europe + 'Lisbon',\n 'turkey standard time': europe + 'Istanbul',\n trt: europe + 'Istanbul',\n 'turkish time': europe + 'Istanbul',\n\n //africa\n etc: africa + 'Freetown',\n utc: africa + 'Freetown',\n 'greenwich standard time': africa + 'Freetown',\n gmt: africa + 'Freetown',\n 'east africa time': africa + 'Nairobi',\n // eat: africa+'Nairobi',\n 'east african time': africa + 'Nairobi',\n 'eastern africa time': africa + 'Nairobi',\n 'central africa time': africa + 'Khartoum',\n // cat: africa+'Khartoum',\n 'central african time': africa + 'Khartoum',\n 'south africa standard time': africa + 'Johannesburg',\n sast: africa + 'Johannesburg',\n 'southern africa': africa + 'Johannesburg',\n 'south african': africa + 'Johannesburg',\n 'west africa standard time': africa + 'Lagos',\n // wat: africa+'Lagos',\n 'western africa time': africa + 'Lagos',\n 'west african time': africa + 'Lagos',\n\n 'australian central standard time': aus + 'Adelaide',\n acst: aus + 'Adelaide',\n 'australian central daylight time': aus + 'Adelaide',\n acdt: aus + 'Adelaide',\n 'australia central': aus + 'Adelaide',\n 'australian eastern standard time': aus + 'Brisbane',\n aest: aus + 'Brisbane',\n 'australian eastern daylight time': aus + 'Brisbane',\n aedt: aus + 'Brisbane',\n 'australia east': aus + 'Brisbane',\n 'australian western standard time': aus + 'Perth',\n awst: aus + 'Perth',\n 'australian western daylight time': aus + 'Perth',\n awdt: aus + 'Perth',\n 'australia west': aus + 'Perth',\n 'australian central western standard time': aus + 'Eucla',\n acwst: aus + 'Eucla',\n 'australia central west': aus + 'Eucla',\n 'lord howe standard time': aus + 'Lord_Howe',\n lhst: aus + 'Lord_Howe',\n 'lord howe daylight time': aus + 'Lord_Howe',\n lhdt: aus + 'Lord_Howe',\n 'russian standard time': europe + 'Moscow',\n msk: europe + 'Moscow',\n russian: europe + 'Moscow',\n\n //america\n 'central standard time': america + 'Chicago',\n 'central time': america + 'Chicago',\n cst: america + 'Havana',\n 'central daylight time': america + 'Chicago',\n cdt: america + 'Havana',\n 'mountain standard time': america + 'Denver',\n 'mountain time': america + 'Denver',\n mst: america + 'Denver',\n 'mountain daylight time': america + 'Denver',\n mdt: america + 'Denver',\n 'atlantic standard time': america + 'Halifax',\n 'atlantic time': america + 'Halifax',\n ast: asia + 'Baghdad',\n 'atlantic daylight time': america + 'Halifax',\n adt: america + 'Halifax',\n 'eastern standard time': america + 'New_York',\n 'eastern time': america + 'New_York',\n est: america + 'New_York',\n 'eastern daylight time': america + 'New_York',\n edt: america + 'New_York',\n 'pacific time': america + 'Los_Angeles',\n 'pacific standard time': america + 'Los_Angeles',\n pst: america + 'Los_Angeles',\n 'pacific daylight time': america + 'Los_Angeles',\n pdt: america + 'Los_Angeles',\n 'alaskan standard time': america + 'Anchorage',\n 'alaskan time': america + 'Anchorage',\n ahst: america + 'Anchorage',\n 'alaskan daylight time': america + 'Anchorage',\n ahdt: america + 'Anchorage',\n 'hawaiian standard time': pac + 'Honolulu',\n 'hawaiian time': pac + 'Honolulu',\n hst: pac + 'Honolulu',\n 'aleutian time': pac + 'Honolulu',\n 'hawaii time': pac + 'Honolulu',\n 'newfoundland standard time': america + 'St_Johns',\n 'newfoundland time': america + 'St_Johns',\n nst: america + 'St_Johns',\n 'newfoundland daylight time': america + 'St_Johns',\n ndt: america + 'St_Johns',\n 'brazil time': america + 'Sao_Paulo',\n brt: america + 'Sao_Paulo',\n brasília: america + 'Sao_Paulo',\n brasilia: america + 'Sao_Paulo',\n 'brazilian time': america + 'Sao_Paulo',\n 'argentina time': america + 'Buenos_Aires',\n // art: a+'Buenos_Aires',\n 'argentinian time': america + 'Buenos_Aires',\n 'amazon time': america + 'Manaus',\n amt: america + 'Manaus',\n 'amazonian time': america + 'Manaus',\n 'easter island standard time': 'Chile/Easterisland',\n east: 'Chile/Easterisland',\n 'easter island summer time': 'Chile/Easterisland',\n easst: 'Chile/Easterisland',\n 'venezuelan standard time': america + 'Caracas',\n 'venezuelan time': america + 'Caracas',\n vet: america + 'Caracas',\n 'venezuela time': america + 'Caracas',\n 'paraguay time': america + 'Asuncion',\n pyt: america + 'Asuncion',\n 'paraguay summer time': america + 'Asuncion',\n pyst: america + 'Asuncion',\n 'cuba standard time': america + 'Havana',\n 'cuba time': america + 'Havana',\n 'cuba daylight time': america + 'Havana',\n 'cuban time': america + 'Havana',\n 'bolivia time': america + 'La_Paz',\n // bot: a+'La_Paz',\n 'bolivian time': america + 'La_Paz',\n 'colombia time': america + 'Bogota',\n cot: america + 'Bogota',\n 'colombian time': america + 'Bogota',\n 'acre time': america + 'Eirunepe',\n // act: a+'Eirunepe',\n 'peru time': america + 'Lima',\n // pet: a+'Lima',\n 'chile standard time': america + 'Punta_Arenas',\n 'chile time': america + 'Punta_Arenas',\n clst: america + 'Punta_Arenas',\n 'chile summer time': america + 'Punta_Arenas',\n cldt: america + 'Punta_Arenas',\n 'uruguay time': america + 'Montevideo',\n uyt: america + 'Montevideo',\n\n //asia\n ist: asia + 'Jerusalem',\n 'arabic standard time': asia + 'Baghdad',\n 'arabic time': asia + 'Baghdad',\n 'arab time': asia + 'Baghdad',\n 'iran standard time': asia + 'Tehran',\n 'iran time': asia + 'Tehran',\n irst: asia + 'Tehran',\n 'iran daylight time': asia + 'Tehran',\n irdt: asia + 'Tehran',\n iranian: asia + 'Tehran',\n 'pakistan standard time': asia + 'Karachi',\n 'pakistan time': asia + 'Karachi',\n pkt: asia + 'Karachi',\n 'india standard time': asia + 'Kolkata',\n 'indian time': asia + 'Kolkata',\n 'indochina time': asia + 'Bangkok',\n ict: asia + 'Bangkok',\n 'south east asia': asia + 'Bangkok',\n 'china standard time': asia + 'Shanghai',\n ct: asia + 'Shanghai',\n 'chinese time': asia + 'Shanghai',\n 'alma-ata time': asia + 'Almaty',\n almt: asia + 'Almaty',\n 'oral time': asia + 'Oral',\n 'orat time': asia + 'Oral',\n 'yakutsk time': asia + 'Yakutsk',\n yakt: asia + 'Yakutsk',\n 'gulf standard time': asia + 'Dubai',\n 'gulf time': asia + 'Dubai',\n gst: asia + 'Dubai',\n uae: asia + 'Dubai',\n 'hong kong time': asia + 'Hong_Kong',\n hkt: asia + 'Hong_Kong',\n 'western indonesian time': asia + 'Jakarta',\n wib: asia + 'Jakarta',\n 'indonesia time': asia + 'Jakarta',\n 'central indonesian time': asia + 'Makassar',\n wita: asia + 'Makassar',\n 'israel daylight time': asia + 'Jerusalem',\n idt: asia + 'Jerusalem',\n 'israel standard time': asia + 'Jerusalem',\n 'israel time': asia + 'Jerusalem',\n israeli: asia + 'Jerusalem',\n 'krasnoyarsk time': asia + 'Krasnoyarsk',\n krat: asia + 'Krasnoyarsk',\n 'malaysia time': asia + 'Kuala_Lumpur',\n myt: asia + 'Kuala_Lumpur',\n 'singapore time': asia + 'Singapore',\n sgt: asia + 'Singapore',\n 'korea standard time': asia + 'Seoul',\n 'korea time': asia + 'Seoul',\n kst: asia + 'Seoul',\n 'korean time': asia + 'Seoul',\n 'uzbekistan time': asia + 'Samarkand',\n uzt: asia + 'Samarkand',\n 'vladivostok time': asia + 'Vladivostok',\n vlat: asia + 'Vladivostok',\n\n //indian\n 'maldives time': 'Indian/Maldives',\n mvt: 'Indian/Maldives',\n 'mauritius time': 'Indian/Mauritius',\n mut: 'Indian/Mauritius',\n\n // pacific\n 'marshall islands time': pac + 'Kwajalein',\n mht: pac + 'Kwajalein',\n 'samoa standard time': pac + 'Midway',\n sst: pac + 'Midway',\n 'somoan time': pac + 'Midway',\n 'chamorro standard time': pac + 'Guam',\n chst: pac + 'Guam',\n 'papua new guinea time': pac + 'Bougainville',\n pgt: pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nlet iana = spacetime().timezones\nlet formal = Object.keys(iana).reduce((h, k) => {\n h[k] = k\n return h\n}, {})\nmodule.exports = Object.assign({}, informal, formal)\n","module.exports = [\n 'weekday',\n\n 'summer',\n 'winter',\n 'autumn',\n\n 'some day',\n 'one day',\n 'all day',\n 'some point',\n\n 'eod',\n 'eom',\n 'standard time',\n 'daylight time',\n]\n","module.exports = [\n 'centuries',\n 'century',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'millisecond',\n 'milliseconds',\n 'minute',\n 'minutes',\n 'month',\n 'months',\n 'seconds',\n 'week',\n 'weeks',\n 'year',\n 'years',\n]\n","module.exports = [\n 'all hallows eve',\n 'all saints day',\n 'all sts day',\n 'april fools',\n 'armistice day',\n 'australia day',\n 'bastille day',\n 'boxing day',\n 'canada day',\n 'christmas eve',\n 'christmas',\n 'cinco de mayo',\n 'day of the dead',\n 'dia de muertos',\n 'dieciseis de septiembre',\n 'emancipation day',\n 'grito de dolores',\n 'groundhog day',\n 'halloween',\n 'harvey milk day',\n 'inauguration day',\n 'independence day',\n 'independents day',\n 'juneteenth',\n 'labour day',\n 'national freedom day',\n 'national nurses day',\n 'new years eve',\n 'new years',\n 'purple heart day',\n 'rememberance day',\n 'rosa parks day',\n 'saint andrews day',\n 'saint patricks day',\n 'saint stephens day',\n 'saint valentines day',\n 'st andrews day',\n 'st patricks day',\n 'st stephens day',\n 'st valentines day ',\n 'valentines day',\n 'valentines',\n 'veterans day',\n 'victoria day',\n 'womens equality day',\n 'xmas',\n // Fixed religious and cultural holidays\n // Catholic + Christian\n 'epiphany',\n 'orthodox christmas day',\n 'orthodox new year',\n 'assumption of mary',\n 'all souls day',\n 'feast of the immaculate conception',\n 'feast of our lady of guadalupe',\n\n // Kwanzaa\n 'kwanzaa',\n // Pagan / metal 🤘\n 'imbolc',\n 'beltaine',\n 'lughnassadh',\n 'samhain',\n 'martin luther king day',\n 'mlk day',\n 'presidents day',\n 'mardi gras',\n 'tax day',\n 'commonwealth day',\n 'mothers day',\n 'memorial day',\n 'fathers day',\n 'columbus day',\n 'indigenous peoples day',\n 'canadian thanksgiving',\n 'election day',\n 'thanksgiving',\n 't-day',\n 'turkey day',\n 'black friday',\n 'cyber monday',\n // Astronomical religious and cultural holidays\n 'ash wednesday',\n 'palm sunday',\n 'maundy thursday',\n 'good friday',\n 'holy saturday',\n 'easter',\n 'easter sunday',\n 'easter monday',\n 'orthodox good friday',\n 'orthodox holy saturday',\n 'orthodox easter',\n 'orthodox easter monday',\n 'ascension day',\n 'pentecost',\n 'whitsunday',\n 'whit sunday',\n 'whit monday',\n 'trinity sunday',\n 'corpus christi',\n 'advent',\n // Jewish\n 'tu bishvat',\n 'tu bshevat',\n 'purim',\n 'passover',\n 'yom hashoah',\n 'lag baomer',\n 'shavuot',\n 'tisha bav',\n 'rosh hashana',\n 'yom kippur',\n 'sukkot',\n 'shmini atzeret',\n 'simchat torah',\n 'chanukah',\n 'hanukkah',\n // Muslim\n 'isra and miraj',\n 'lailat al-qadr',\n 'eid al-fitr',\n 'id al-Fitr',\n 'eid ul-Fitr',\n 'ramadan',\n 'eid al-adha',\n 'muharram',\n 'the prophets birthday',\n 'ostara',\n 'march equinox',\n 'vernal equinox',\n 'litha',\n 'june solistice',\n 'summer solistice',\n 'mabon',\n 'september equinox',\n 'fall equinox',\n 'autumnal equinox',\n 'yule',\n 'december solstice',\n 'winter solstice',\n // Additional important holidays\n 'chinese new year',\n 'diwali',\n]\n","module.exports = [\n 'noon',\n 'midnight',\n 'now',\n 'morning',\n 'tonight',\n 'evening',\n 'afternoon',\n 'night',\n 'breakfast time',\n 'lunchtime',\n 'dinnertime',\n 'sometime',\n 'eod',\n 'oclock',\n 'oclock',\n 'all day',\n 'at night',\n]\n","let lex = {}\nconst timezones = require('../_timezones')\n\nconst data = [\n [require('./dates'), '#Date'],\n [require('./durations'), '#Duration'],\n [require('./holidays'), '#Holiday'],\n [require('./times'), '#Time'],\n [Object.keys(timezones), '#Timezone'],\n]\ndata.forEach(a => {\n for (let i = 0; i < a[0].length; i++) {\n lex[a[0][i]] = a[1]\n }\n})\n\nmodule.exports = lex\n","const normalize = function(doc) {\n doc = doc.clone()\n\n if (!doc.numbers) {\n console.warn(\"Compromise: compromise-dates cannot find plugin dependency 'compromise-number'\")\n } else {\n // convert 'two' to 2\n let num = doc.numbers()\n num.toNumber()\n num.toCardinal()\n }\n // remove adverbs\n doc.adverbs().remove()\n return doc\n}\nmodule.exports = normalize\n","const knownUnits = {\n second: true,\n minute: true,\n hour: true,\n day: true,\n week: true,\n month: true,\n season: true,\n quarter: true,\n year: true,\n}\n\n//turn '5 weeks before' to {weeks:5}\nconst parseShift = function (doc) {\n let result = {}\n let m = doc.match('#DateShift+')\n if (m.found === false) {\n return result\n }\n m.match('#Cardinal #Duration').forEach((ts) => {\n let num = ts.match('#Cardinal').text('normal')\n num = parseFloat(num)\n if (num && typeof num === 'number') {\n let unit = ts.match('#Duration').text('normal')\n unit = unit.replace(/s$/, '')\n if (unit && knownUnits.hasOwnProperty(unit)) {\n result[unit] = num\n }\n }\n })\n //is it 2 weeks ago? → -2\n if (m.has('(before|ago)$') === true) {\n Object.keys(result).forEach((k) => (result[k] *= -1))\n }\n // finally, remove it from our text\n doc.remove('#DateShift')\n return result\n}\nmodule.exports = parseShift\n","const spacetime = require('spacetime')\n\nconst hardCoded = {\n daybreak: '7:00am', //ergh\n breakfast: '8:00am',\n morning: '9:00am',\n noon: '12:00pm',\n afternoon: '2:00pm',\n lunchtime: '12:00pm',\n evening: '6:00pm',\n dinnertime: '6:00pm',\n night: '8:00pm',\n midnight: '12:00am',\n}\n\nconst halfPast = function (m, s) {\n let hour = m.match('#Cardinal$').text('reduced')\n\n let term = m.match('(half|quarter|25|15|10|5)')\n let mins = term.text('reduced')\n if (term.has('half')) {\n mins = '30'\n }\n if (term.has('quarter')) {\n mins = '15'\n }\n let behind = m.has('to')\n // apply it\n s = s.hour(hour)\n s = s.startOf('hour')\n if (behind) {\n s = s.subtract(mins, 'minutes')\n } else {\n s = s.add(mins, 'minutes')\n }\n return s\n}\n\nconst parseTime = function (doc, context) {\n let time = doc.match('(at|by|for|before)? #Time+')\n if (time.found) {\n doc.remove(time)\n }\n // get the main part of the time\n time = time.not('(at|by|for|before|sharp)')\n time = time.not('on the dot')\n let s = spacetime.now(context.timezone)\n let now = s.clone()\n\n // check for known-times (like 'today')\n let timeStr = time.text('reduced')\n if (hardCoded.hasOwnProperty(timeStr)) {\n return hardCoded[timeStr]\n }\n\n // '5 oclock'\n let m = time.match('^#Cardinal oclock (am|pm)?')\n if (m.found) {\n m = m.not('oclock')\n s = s.hour(m.text('reduced'))\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n\n // 'quarter to two'\n m = time.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal')\n if (m.found) {\n s = halfPast(m, s)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n // parse random a time like '4:54pm'\n let str = time.text('reduced')\n s = s.time(str)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n return null\n}\nmodule.exports = parseTime\n","// interpret 'this halloween' or 'next june'\nconst parseRelative = function(doc) {\n let rel = null\n if (doc.has('^this? (next|upcoming)')) {\n rel = 'next'\n }\n if (doc.has('^this? (last|previous)')) {\n rel = 'last'\n }\n if (doc.has('^(this|current)')) {\n rel = 'this'\n }\n // finally, remove it from our text\n doc.remove('^(this|current|next|upcoming|last|previous)')\n return rel\n}\nmodule.exports = parseRelative\n","const informal = require('../../data/_timezones')\n\nconst isOffset = /(\\-?[0-9]+)h(rs)?/i\nconst isNumber = /(\\-?[0-9]+)/\nconst utcOffset = /utc([\\-+]?[0-9]+)/i\nconst gmtOffset = /gmt([\\-+]?[0-9]+)/i\n\nconst toIana = function(num) {\n num = Number(num)\n if (num > -13 && num < 13) {\n num = num * -1 //it's opposite!\n num = (num > 0 ? '+' : '') + num //add plus sign\n return 'Etc/GMT' + num\n }\n return null\n}\n\nconst parseOffset = function(tz) {\n // '+5hrs'\n let m = tz.match(isOffset)\n if (m !== null) {\n return toIana(m[1])\n }\n // 'utc+5'\n m = tz.match(utcOffset)\n if (m !== null) {\n return toIana(m[1])\n }\n // 'GMT-5' (not opposite)\n m = tz.match(gmtOffset)\n if (m !== null) {\n let num = Number(m[1]) * -1\n return toIana(num)\n }\n // '+5'\n m = tz.match(isNumber)\n if (m !== null) {\n return toIana(m[1])\n }\n return null\n}\n\nconst parseTimezone = function(doc) {\n let m = doc.match('#Timezone+')\n //remove prepositions\n m = m.remove('(in|for|by|near|at)')\n let str = m.text('reduced')\n\n // remove it from our doc, either way\n doc.remove('#Timezone+')\n\n // check our list of informal tz names\n if (informal.hasOwnProperty(str)) {\n return informal[str]\n }\n let tz = parseOffset(str)\n if (tz) {\n return tz\n }\n\n return null\n}\nmodule.exports = parseTimezone\n","const spacetime = require('spacetime')\n\nclass Unit {\n constructor(input, unit, context) {\n this.unit = unit || 'day'\n context = context || {}\n let today = {}\n if (context.today) {\n today = {\n date: context.today.date(),\n month: context.today.month(),\n year: context.today.year(),\n }\n }\n // set it to the beginning of the given unit\n let d = spacetime(input, context.timezone, { today: today })\n\n // set to beginning\n if (d.isValid()) {\n d = d.startOf(this.unit)\n }\n Object.defineProperty(this, 'd', {\n enumerable: false,\n writable: true,\n value: d,\n })\n Object.defineProperty(this, 'context', {\n enumerable: false,\n writable: true,\n value: context,\n })\n }\n // make a new one\n clone() {\n let d = new Unit(this.d, this.unit, this.context)\n return d\n }\n log() {\n console.log('--')\n this.d.log()\n console.log('\\n')\n return this\n }\n applyShift(obj = {}) {\n Object.keys(obj).forEach((k) => {\n this.d = this.d.add(obj[k], k)\n })\n return this\n }\n applyTime(str) {\n if (str) {\n this.d = this.d.time(str)\n } else {\n this.d = this.d.startOf('day') //zero-out time\n }\n return this\n }\n format(fmt) {\n return this.d.format(fmt)\n }\n start() {\n this.d = this.d.startOf(this.unit)\n return this\n }\n end() {\n this.d = this.d.endOf(this.unit)\n return this\n }\n // 'before 2019'\n before() {\n this.d = spacetime.now(this.context.timezone, { today: this.context.today }) // ???\n return this\n }\n // 'after 2019'\n after() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'next june' 'next tuesday'\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'last june' 'last tuesday'\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nmodule.exports = Unit\n","const spacetime = require('spacetime')\nconst Unit = require('./Unit')\n\nclass Day extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n }\n}\nclass Month extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n }\n}\nclass Quarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n }\n}\nclass Year extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'year'\n }\n}\nclass WeekDay extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n this.d = spacetime(context.today, context.timezone)\n this.d = this.d.day(input)\n this.weekDay = this.d.dayName()\n //assume a wednesday in the future\n if (this.d.date() < spacetime.now(context.timezone).date()) {\n this.d = this.d.add(7, 'days')\n }\n }\n next() {\n this.d = this.d.add(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n last() {\n this.d = this.d.minus(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n}\n// like 'feb 2'\nclass CalendarDate extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n }\n next() {\n this.d = this.d.add(1, 'year')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n return this\n }\n}\n\nmodule.exports = {\n Unit: Unit,\n Day: Day,\n Month: Month,\n Quarter: Quarter,\n Year: Year,\n WeekDay: WeekDay,\n CalendarDate: CalendarDate,\n}\n","const { Unit } = require('../_units')\n\nconst onlySection = function(doc, context, section) {\n let d = null\n if (doc.found === false) {\n // do we have just a time?\n if (section.time !== null) {\n d = new Unit(context.today, null, context) // choose today\n }\n //do we just have a shift?\n if (Object.keys(section.shift).length > 0) {\n d = new Unit(context.today, null, context) // choose today\n }\n }\n return d\n}\nmodule.exports = onlySection\n","const units = require('../_units')\nconst mapping = {\n week: units.Week,\n month: units.Month,\n quarter: units.Quarter,\n year: units.Year,\n season: units.Season,\n}\n\n// when a unit of time is spoken of as 'this month' - instead of 'february'\nconst namedUnit = function (doc, context) {\n //this month, last quarter, next year\n let m = doc.match('(weekday|week|month|quarter|season|year)')\n if (m.found === true) {\n let str = m.lastTerm().text('reduced')\n if (mapping.hasOwnProperty(str)) {\n let Model = mapping[str]\n if (!Model) {\n return null\n }\n let unit = new Model(null, str, context)\n return unit\n }\n }\n\n //try this version - 'next friday, last thursday'\n m = doc.match('(monday|tuesday|wednesday|thursday|friday|saturday|sunday)')\n if (m.found === true) {\n let str = m.lastTerm().text('reduced')\n let unit = new units.WeekDay(str, null, context)\n return unit\n }\n return null\n}\nmodule.exports = namedUnit\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('spacetime')) :\n typeof define === 'function' && define.amd ? define(['spacetime'], factory) :\n (global = global || self, global.spacetimeHoliday = factory(global.spacetime));\n}(this, function (spacetime) { 'use strict';\n\n spacetime = spacetime && spacetime.hasOwnProperty('default') ? spacetime['default'] : spacetime;\n\n //yep,\n var jan = 'january';\n var feb = 'february';\n var mar = 'march';\n var apr = 'april';\n var may = 'may';\n var jun = 'june';\n var jul = 'july';\n var aug = 'august';\n var sep = 'september';\n var oct = 'october';\n var nov = 'november';\n var dec = 'december';\n var fixedHolidays = {\n 'new years eve': [dec, 31],\n 'new years': [jan, 1],\n 'new years day': [jan, 1],\n 'inauguration day': [jan, 20],\n 'australia day': [jan, 26],\n 'national freedom day': [feb, 1],\n 'groundhog day': [feb, 2],\n 'rosa parks day': [feb, 4],\n 'valentines day': [feb, 14],\n 'saint valentines day': [feb, 14],\n 'st valentines day ': [feb, 14],\n 'saint patricks day': [mar, 17],\n 'st patricks day': [mar, 17],\n 'april fools': [apr, 1],\n 'april fools day': [apr, 1],\n 'emancipation day': [apr, 16],\n 'tax day': [apr, 15],\n //US\n 'labour day': [may, 1],\n 'cinco de mayo': [may, 5],\n 'national nurses day': [may, 6],\n 'harvey milk day': [may, 22],\n 'victoria day': [may, 24],\n juneteenth: [jun, 19],\n 'canada day': [jul, 1],\n 'independence day': [jul, 4],\n 'independents day': [jul, 4],\n 'bastille day': [jul, 14],\n 'purple heart day': [aug, 7],\n 'womens equality day': [aug, 26],\n '16 de septiembre': [sep, 16],\n 'dieciseis de septiembre': [sep, 16],\n 'grito de dolores': [sep, 16],\n halloween: [oct, 31],\n 'all hallows eve': [oct, 31],\n 'day of the dead': [oct, 31],\n // Ranged holiday [nov, 2],\n 'dia de muertos': [oct, 31],\n // Ranged holiday [nov, 2],\n 'veterans day': [nov, 11],\n 'st andrews day': [nov, 30],\n 'saint andrews day': [nov, 30],\n 'all saints day': [nov, 1],\n 'all sts day': [nov, 1],\n 'armistice day': [nov, 11],\n 'rememberance day': [nov, 11],\n 'christmas eve': [dec, 24],\n christmas: [dec, 25],\n xmas: [dec, 25],\n 'boxing day': [dec, 26],\n 'st stephens day': [dec, 26],\n 'saint stephens day': [dec, 26],\n // Fixed religious and cultural holidays\n // Catholic + Christian\n epiphany: [jan, 6],\n 'orthodox christmas day': [jan, 7],\n 'orthodox new year': [jan, 14],\n 'assumption of mary': [aug, 15],\n 'all souls day': [nov, 2],\n 'feast of the immaculate conception': [dec, 8],\n 'feast of our lady of guadalupe': [dec, 12],\n // Kwanzaa\n kwanzaa: [dec, 26],\n // Ranged holiday [jan, 1],\n // Pagan / metal 🤘\n imbolc: [feb, 2],\n beltaine: [may, 1],\n lughnassadh: [aug, 1],\n samhain: [oct, 31]\n };\n\n var fixedDates = function fixedDates(str, normal, year) {\n if (fixedHolidays.hasOwnProperty(str) || fixedHolidays.hasOwnProperty(normal)) {\n var arr = fixedHolidays[str] || fixedHolidays[normal] || [];\n var s = spacetime.now();\n s = s.year(year);\n s = s.startOf('year');\n s = s.month(arr[0]);\n s = s.date(arr[1]);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _01FixedDates = fixedDates;\n\n //these are holidays on the 'nth weekday of month'\n var jan$1 = 'january';\n var feb$1 = 'february';\n var mar$1 = 'march'; // const apr = 'april'\n\n var may$1 = 'may';\n var jun$1 = 'june'; // const jul = 'july'\n // const aug = 'august'\n\n var sep$1 = 'september';\n var oct$1 = 'october';\n var nov$1 = 'november'; // const dec = 'december'\n\n var mon = 'monday'; // const tues = 'tuesday'\n // const wed = 'wednesday'\n\n var thurs = 'thursday';\n var fri = 'friday'; // const sat = 'saturday'\n\n var sun = 'sunday';\n var holidays = {\n 'martin luther king day': [3, mon, jan$1],\n //[third monday in january],\n 'presidents day': [3, mon, feb$1],\n //[third monday in february],\n 'commonwealth day': [2, mon, mar$1],\n //[second monday in march],\n 'mothers day': [2, sun, may$1],\n //[second Sunday in May],\n 'fathers day': [3, sun, jun$1],\n //[third Sunday in June],\n 'labor day': [1, mon, sep$1],\n //[first monday in september],\n 'columbus day': [2, mon, oct$1],\n //[second monday in october],\n 'canadian thanksgiving': [2, mon, oct$1],\n //[second monday in october],\n thanksgiving: [4, thurs, nov$1],\n // [fourth Thursday in November],\n 'black friday': [4, fri, nov$1] //[fourth friday in november],\n // 'memorial day': [may], //[last monday in may],\n // 'us election': [nov], // [Tuesday following the first Monday in November],\n // 'cyber monday': [nov]\n // 'advent': [] // fourth Sunday before Christmas\n\n }; // add aliases\n\n holidays['turday day'] = holidays.thanksgiving;\n holidays['indigenous peoples day'] = holidays['columbus day'];\n holidays['mlk day'] = holidays['martin luther king day'];\n var calendarHolidays = holidays;\n\n var fixedDates$1 = function fixedDates(str, normal, year) {\n if (calendarHolidays.hasOwnProperty(str) || calendarHolidays.hasOwnProperty(normal)) {\n var arr = calendarHolidays[str] || calendarHolidays[normal] || [];\n var s = spacetime.now();\n s = s.year(year); // [3rd, 'monday', 'january']\n\n s = s.month(arr[2]);\n s = s.startOf('month'); // make it january\n\n var month = s.month(); // make it the 1st monday\n\n s = s.day(arr[1]);\n\n if (s.month() !== month) {\n s = s.add(1, 'week');\n } // make it nth monday\n\n\n if (arr[0] > 1) {\n s = s.add(arr[0] - 1, 'week');\n }\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _02NthWeekday = fixedDates$1;\n\n // https://www.timeanddate.com/calendar/determining-easter-date.html\n var dates = {\n easter: 0,\n 'ash wednesday': -46,\n // (46 days before easter)\n 'palm sunday': 7,\n // (1 week before easter)\n 'maundy thursday': -3,\n // (3 days before easter)\n 'good friday': -2,\n // (2 days before easter)\n 'holy saturday': -1,\n // (1 days before easter)\n 'easter saturday': -1,\n // (1 day before easter)\n 'easter monday': 1,\n // (1 day after easter)\n 'ascension day': 39,\n // (39 days after easter)\n 'whit sunday': 49,\n // / pentecost (49 days after easter)\n 'whit monday': 50,\n // (50 days after easter)\n 'trinity sunday': 65,\n // (56 days after easter)\n 'corpus christi': 60,\n // (60 days after easter)\n 'mardi gras': -47 //(47 days before easter)\n\n };\n dates['easter sunday'] = dates.easter;\n dates['pentecost'] = dates['whit sunday'];\n dates['whitsun'] = dates['whit sunday'];\n var easterHolidays = dates;\n\n // by John Dyer\n // based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php\n var calcEaster = function calcEaster(year) {\n var f = Math.floor,\n // Golden Number - 1\n G = year % 19,\n C = f(year / 100),\n // related to Epact\n H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30,\n // number of days from 21 March to the Paschal full moon\n I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)),\n // weekday for the Paschal full moon\n J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7,\n // number of days from 21 March to the Sunday on or before the Paschal full moon\n L = I - J,\n month = 3 + f((L + 40) / 44),\n date = L + 28 - 31 * f(month / 4);\n month = month === 4 ? 'April' : 'March';\n return month + ' ' + date;\n };\n\n var calcEaster_1 = calcEaster;\n\n var easterDates = function easterDates(str, normal, year) {\n if (easterHolidays.hasOwnProperty(str) || easterHolidays.hasOwnProperty(normal)) {\n var days = easterHolidays[str] || easterHolidays[normal] || [];\n var date = calcEaster_1(year);\n\n if (!date) {\n return null; //no easter for this year\n }\n\n var e = spacetime(date);\n e = e.year(year);\n var s = e.add(days, 'day');\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _03EasterDates = easterDates;\n\n // http://www.astropixels.com/ephemeris/soleq2001.html\n // years 2000-2100\n var exceptions = {\n spring: [2003, 2007, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2077, 2080, 2081, 2084, 2085, 2088, 2089, 2092, 2093, 2096, 2097],\n summer: [2021, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2041, 2044, 2045, 2048, 2049, 2052, 2053, 2056, 2057, 2060, 2061, 2064, 2065, 2068, 2069, 2070, 2072, 2073, 2074, 2076, 2077, 2078, 2080, 2081, 2082, 2084, 2085, 2086, 2088, 2089, 2090, 2092, 2093, 2094, 2096, 2097, 2098, 2099],\n fall: [2002, 2003, 2004, 2006, 2007, 2010, 2011, 2014, 2015, 2018, 2019, 2022, 2023, 2026, 2027, 2031, 2035, 2039, 2043, 2047, 2051, 2055, 2059, 2092, 2096],\n winter: [2002, 2003, 2006, 2007, 2011, 2015, 2019, 2023, 2027, 2031, 2035, 2039, 2043, 2080, 2084, 2088, 2092, 2096]\n };\n var winter20th = [2080, 2084, 2088, 2092, 2096];\n\n var calcSeasons = function calcSeasons(year) {\n // most common defaults\n var res = {\n spring: 'March 20 ' + year,\n summer: 'June 21 ' + year,\n fall: 'Sept 22 ' + year,\n winter: 'Dec 21 ' + year\n };\n\n if (exceptions.spring.indexOf(year) !== -1) {\n res.spring = 'March 19 ' + year;\n }\n\n if (exceptions.summer.indexOf(year) !== -1) {\n res.summer = 'June 20 ' + year;\n }\n\n if (exceptions.fall.indexOf(year) !== -1) {\n res.fall = 'Sept 21 ' + year;\n } // winter can be 20th, 21st, or 22nd\n\n\n if (exceptions.winter.indexOf(year) !== -1) {\n res.winter = 'Dec 22 ' + year;\n }\n\n if (winter20th.indexOf(year) !== -1) {\n res.winter = 'Dec 20 ' + year;\n }\n\n return res;\n };\n\n var seasons = calcSeasons;\n\n // these are properly calculated in ./lib/seasons\n var dates$1 = {\n 'spring equinox': 'spring',\n 'summer solistice': 'summer',\n 'fall equinox': 'fall',\n 'winter solstice': 'winter'\n }; // aliases\n\n dates$1['march equinox'] = dates$1['spring equinox'];\n dates$1['vernal equinox'] = dates$1['spring equinox'];\n dates$1['ostara'] = dates$1['spring equinox'];\n dates$1['june solstice'] = dates$1['summer solistice'];\n dates$1['litha'] = dates$1['summer solistice'];\n dates$1['autumn equinox'] = dates$1['fall equinox'];\n dates$1['autumnal equinox'] = dates$1['fall equinox'];\n dates$1['september equinox'] = dates$1['fall equinox'];\n dates$1['sept equinox'] = dates$1['fall equinox'];\n dates$1['mabon'] = dates$1['fall equinox'];\n dates$1['december solstice'] = dates$1['winter solistice'];\n dates$1['dec solstice'] = dates$1['winter solistice'];\n dates$1['yule'] = dates$1['winter solistice'];\n var astroHolidays = dates$1;\n\n var astroDates = function astroDates(str, normal, year) {\n if (astroHolidays.hasOwnProperty(str) || astroHolidays.hasOwnProperty(normal)) {\n var season = astroHolidays[str] || astroHolidays[normal];\n var seasons$1 = seasons(year);\n\n if (!season || !seasons$1 || !seasons$1[season]) {\n return null; // couldn't figure it out\n }\n\n var s = spacetime(seasons$1[season]);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _04Astronomical = astroDates;\n\n var dates$2 = {\n // Muslim holidays\n 'isra and miraj': 'april 13',\n 'lailat al-qadr': 'june 10',\n 'eid al-fitr': 'june 15',\n 'id al-Fitr': 'june 15',\n 'eid ul-Fitr': 'june 15',\n ramadan: 'may 16',\n // Range holiday\n 'eid al-adha': 'sep 22',\n muharram: 'sep 12',\n 'prophets birthday': 'nov 21'\n };\n var lunarHolidays = dates$2;\n\n var dayDiff = -10.64;\n\n var lunarDates = function lunarDates(str, normal, year) {\n if (lunarHolidays.hasOwnProperty(str) || lunarHolidays.hasOwnProperty(normal)) {\n var date = lunarHolidays[str] || lunarHolidays[normal] || [];\n\n if (!date) {\n return null;\n } // start at 2018\n\n\n var s = spacetime(date + ' 2018');\n var diff = year - 2018;\n var toAdd = diff * dayDiff;\n s = s.add(toAdd, 'day');\n s = s.startOf('day'); // now set the correct year\n\n s = s.year(year);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _05LunarDates = lunarDates;\n\n var nowYear = spacetime.now().year();\n\n var spacetimeHoliday = function spacetimeHoliday(str, year) {\n year = year || nowYear;\n str = str || '';\n str = String(str);\n str = str.trim().toLowerCase();\n str = str.replace(/'s/, 's'); // 'mother's day'\n\n var normal = str.replace(/ day$/, '');\n normal = normal.replace(/^the /, '');\n normal = normal.replace(/^orthodox /, ''); //orthodox good friday\n // try easier, unmoving holidays\n\n var s = _01FixedDates(str, normal, year);\n\n if (s !== null) {\n return s;\n } // try 'nth monday' holidays\n\n\n s = _02NthWeekday(str, normal, year);\n\n if (s !== null) {\n return s;\n } // easter-based holidays\n\n\n s = _03EasterDates(str, normal, year);\n\n if (s !== null) {\n return s;\n } // solar-based holidays\n\n\n s = _04Astronomical(str, normal, year);\n\n if (s !== null) {\n return s;\n } // mostly muslim holidays\n\n\n s = _05LunarDates(str, normal, year);\n\n if (s !== null) {\n return s;\n }\n\n return null;\n };\n\n var src = spacetimeHoliday;\n\n return src;\n\n}));\n//# sourceMappingURL=spacetime-holiday.js.map\n","const { CalendarDate } = require('../_units')\nconst spacetimeHoliday = require('spacetime-holiday')\n\nconst parseHoliday = function(doc, context) {\n let d = null\n let str = doc.match('#Holiday+').text('reduced')\n let year = 2020 //change me!\n let s = spacetimeHoliday(str, year)\n if (s !== null) {\n d = new CalendarDate(s, null, context)\n }\n return d\n}\nmodule.exports = parseHoliday\n","const { Unit, Day, CalendarDate, Month } = require('../_units')\nconst tryHere = require('../../../../../src/Phrase/match/03-tryMatch')\n\nconst knownWord = {\n today: (context) => {\n return new Day(context.today, null, context)\n },\n yesterday: (context) => {\n return new Day(context.today.minus(1, 'day'), null, context)\n },\n tomorrow: (context) => {\n return new Day(context.today.plus(1, 'day'), null, context)\n },\n}\n\n// parse things like 'june 5th 2019'\n// most of this is done in spacetime\nconst parseExplicit = function (doc, context) {\n let impliedYear = context.today.year()\n\n // 'fifth of june 1992'\n let m = doc.match('[#Value] of? [#Month] [#Year]')\n // 'june the fifth 1992'\n if (!m.found) {\n m = doc.match('[#Month] the? [#Value] [#Year]')\n }\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n date: m.groups('date').text(),\n year: m.groups('year').text() || impliedYear,\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n\n //no-dates\n // 'march 1992'\n m = doc.match('[#Month] of? [#Year]')\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n year: m.groups('year').text() || impliedYear,\n }\n let d = new Month(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n //no-years\n // 'fifth of june'\n m = doc.match('[#Value] of? [#Month]')\n // 'june the fifth'\n if (!m.found) {\n m = doc.match('[#Month] the? [#Value]')\n }\n // support 'dec 5th'\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n date: m.groups('date').text(),\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n // support 'december'\n if (doc.has('#Month')) {\n let obj = {\n month: doc.match('#Month').text(),\n date: 1, //assume 1st\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n\n // support date-only 'the 21st'\n m = doc.match('the [#Value]')\n if (m.found) {\n let obj = {\n month: context.today.month(),\n date: m.groups('date').text(),\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n let str = doc.text('reduced')\n // today, yesterday, tomorrow\n if (knownWord.hasOwnProperty(str) === true) {\n let d = knownWord[str](context)\n return d\n }\n // punt it to spacetime, for the heavy-lifting\n let d = new Unit(str, null, context)\n // did we find a date?\n if (d.d.isValid() === false) {\n return null\n }\n return d\n}\nmodule.exports = parseExplicit\n","const section = {\n shift: require('./sections/01-shift'),\n time: require('./sections/02-time'),\n relative: require('./sections/03-relative'),\n timezone: require('./sections/04-timezone'),\n}\n\nconst steps = {\n implied: require('./steps/00-implied'),\n duration: require('./steps/01-duration'),\n holiday: require('./steps/02-holidays'),\n explicit: require('./steps/03-explicit'),\n}\n\nconst parseDate = function (doc, context) {\n //parse-out any sections\n let shift = section.shift(doc)\n let tz = section.timezone(doc)\n let time = section.time(doc, context)\n let rel = section.relative(doc)\n //set our new timezone\n if (tz) {\n context = Object.assign({}, context, { timezone: tz })\n let iso = context.today.format('iso-short')\n context.today = context.today.goto(context.timezone).set(iso)\n }\n let d = null\n\n //'in two days'\n d = d || steps.implied(doc, context, { shift, time, rel })\n // 'this month'\n d = d || steps.duration(doc, context)\n // 'this haloween'\n d = d || steps.holiday(doc, context)\n // 'this june 2nd'\n d = d || steps.explicit(doc, context)\n\n if (typeof process !== undefined && process && process.env.DEBUG) {\n console.log('\\n\\n=-=-=-=-=-=Date-=-=-=-=-=-=-')\n console.log(` shift: ${JSON.stringify(shift)}`)\n console.log(` rel: ${rel || '-'}`)\n console.log(` time: ${time || '-'}`)\n console.log(`\\n str: '${doc.text()}'`)\n console.log('\\n ', d)\n console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\\n\\n')\n }\n\n if (!d) {\n return null\n }\n\n // // apply relative\n if (rel === 'last') {\n d.last()\n }\n if (rel === 'next') {\n d.next()\n }\n // apply shift\n if (shift) {\n d.applyShift(shift)\n }\n\n // apply time\n d.applyTime(time)\n\n return d\n}\nmodule.exports = parseDate\n","const parseDate = require('../03-parseDate')\nconst Unit = require('../03-parseDate/Unit')\n\nconst punt = function (unit, context) {\n unit = unit.applyShift(context.casual_duration)\n return unit\n}\n\n//\nconst logic = function (doc, context) {\n // two explicit dates - 'between friday and sunday'\n let m = doc.match('between [*] and [*]')\n if (m.found) {\n let start = m.groups('start')\n start = parseDate(start, context)\n let end = m.groups('end')\n end = parseDate(end, context)\n if (start) {\n return {\n start: start,\n end: end,\n }\n }\n }\n\n // two months, no year - 'june 5 to june 7'\n m = doc.match('[#Month #Value] to [#Month #Value] [#Year?]')\n if (m.found) {\n let res = m.groups()\n let start = res.from\n if (res.year) {\n start = start.concat(res.year)\n }\n start = parseDate(start, context)\n if (start) {\n let end = res.to\n if (res.year) {\n end = end.concat(res.year)\n }\n end = parseDate(end, context)\n return {\n start: start,\n end: end,\n }\n }\n }\n // one month, one year, first form - 'january 5 to 7 1998'\n m = doc.match('[#Month] [#Value] to [#Value] of? [#Year]')\n if (m.found) {\n let res = m.groups()\n let start = res.month.concat(res.from, res.year)\n start = parseDate(start, context)\n if (start) {\n let end = res.month.concat(res.to, res.year)\n end = parseDate(end, context)\n return {\n start: start,\n end: end,\n }\n }\n }\n // one month, one year, second form - '5 to 7 of january 1998'\n m = doc.match('[#Value] to [#Value of? #Month of? #Year]')\n if (m.found) {\n let to = m.groups('to')\n to = parseDate(to, context)\n if (to) {\n let fromDate = m.groups('to')\n let from = to.clone()\n from.d = from.d.date(fromDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // one month, no year - '5 to 7 of january'\n m = doc.match('[#Value] to [#Value of? #Month]')\n if (m.found) {\n let to = m.groups('to')\n to = parseDate(to, context)\n if (to) {\n let fromDate = m.groups('from')\n let from = to.clone()\n from.d = from.d.date(fromDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // one month, no year - 'january 5 to 7'\n m = doc.match('[#Month #Value] to [#Value]')\n if (m.found) {\n let from = m.groups('from')\n from = parseDate(from, context)\n if (from) {\n let toDate = m.groups('to')\n let to = from.clone()\n to.d = to.d.date(toDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // 'from A to B'\n m = doc.match('from? [*] (to|@hasHyphen|until|upto) [*]')\n if (m.found) {\n let from = m.groups('from')\n let to = m.groups('to')\n from = parseDate(from, context)\n to = parseDate(to, context)\n if (from && to) {\n return {\n start: from,\n end: to,\n }\n }\n }\n // 'before june'\n m = doc.match('^due (by|before|on|in)? [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n const today = new Unit(context.today, null, context)\n return {\n start: today,\n end: punt(d.clone(), context),\n }\n }\n }\n // 'after june'\n m = doc.match('^(after|following|from) [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n return {\n start: d,\n end: punt(d.clone(), context),\n }\n }\n }\n // 'in june'\n m = doc.match('^(on|during|in) [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n return {\n start: d,\n end: d.clone().end(),\n }\n }\n }\n //else, try whole thing\n let d = parseDate(doc, context)\n return {\n start: d,\n end: d.clone().end(),\n }\n}\nmodule.exports = logic\n","const spacetime = require('spacetime')\nconst normalize = require('./00-normalize')\nconst parseRanges = require('./01-parse-range')\n\nconst getDate = function (doc, context) {\n // validate context a bit\n context = context || {}\n\n context.timezone = context.timezone || 'ETC/UTC'\n context.today = spacetime(context.today || null, context.timezone)\n //turn 'five' into 5..\n doc = normalize(doc)\n //interpret 'between [A] and [B]'...\n return parseRanges(doc, context)\n}\nmodule.exports = getDate\n","let arr = [\n ['mon', 'monday'],\n ['tue', 'tuesday'],\n ['tues', 'tuesday'],\n ['wed', 'wednesday'],\n ['thu', 'thursday'],\n ['thurs', 'thursday'],\n ['fri', 'friday'],\n ['sat', 'saturday'],\n ['sun', 'sunday'],\n\n ['jan', 'january'],\n ['feb', 'february'],\n ['mar', 'march'],\n ['apr', 'april'],\n ['jun', 'june'],\n ['jul', 'july'],\n ['aug', 'august'],\n ['sep', 'september'],\n ['sept', 'september'],\n ['oct', 'october'],\n ['nov', 'november'],\n ['dec', 'december'],\n]\n\narr = arr.map(a => {\n return { short: a[0], long: a[1] }\n})\n\nmodule.exports = arr\n","const parse = require('./02-getDate')\nconst abbrevs = require('./data/_abbrevs')\n\nmodule.exports = {\n /** overload the original json with noun information */\n json: function (options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { terms: false }\n let res = []\n let format = options.format || 'iso'\n this.forEach((doc) => {\n let json = doc.json(options)[0]\n let obj = parse(doc, this.context)\n let start = obj.start ? obj.start.format(format) : null\n let end = obj.end ? obj.end.format(format) : null\n // set iso strings to json result\n json.date = {\n start: start,\n end: end,\n }\n // add duration\n if (start && end) {\n json.date.duration = obj.start.d.diff(obj.end.d)\n // we don't need these\n delete json.date.duration.milliseconds\n delete json.date.duration.seconds\n }\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n /** render all dates according to a specific format */\n format: function (fmt) {\n this.forEach((doc) => {\n let obj = parse(doc, this.context)\n let str = ''\n if (obj.start) {\n str = obj.start.format(fmt)\n if (obj.end) {\n let end = obj.start.format(fmt)\n if (str !== end) {\n str += ' to ' + end\n }\n }\n doc.replaceWith(str, { keepTags: true, keepCase: false })\n }\n })\n return this\n },\n /** replace 'Fri' with 'Friday', etc*/\n toLongForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.short, a.long, true)\n })\n return this\n },\n /** replace 'Friday' with 'Fri', etc*/\n toShortForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.long, a.short, true)\n })\n return this\n },\n}\n","const tagger = require('./01-tag')\nconst tags = require('./data/_tags')\nconst words = require('./data/words')\nconst methods = require('./methods')\nconst spacetime = require('spacetime')\n\nconst addMethods = function (Doc, world) {\n // our new tags\n world.addTags(tags)\n // add info for the date plugin\n world.addWords(words)\n // run our tagger\n world.postProcess(tagger)\n\n /** */\n class Dates extends Doc {\n constructor(list, from, w) {\n super(list, from, w)\n this.context = {\n casual_duration: { weeks: 2 },\n }\n }\n }\n //add-in methods\n Object.assign(Dates.prototype, methods)\n\n Doc.prototype.dates = function (n) {\n let context = {}\n if (n && typeof n === 'object') {\n context = n\n n = null\n }\n let r = this.clauses()\n let dates = r.match('#Date+')\n if (typeof n === 'number') {\n dates = dates.get(n)\n }\n if (typeof n === 'number') {\n dates = dates.get(n)\n }\n let d = new Dates(dates.list, this, this.world)\n if (context.today) {\n context.today = spacetime(context.today, context.timezone)\n }\n d.context = context\n return d\n }\n}\n\nmodule.exports = addMethods\n"],"names":["preps","thisNext","sections","seasons","tagYear","m","reason","found","term","termList","num","parseInt","clean","tag","tagYearSafe","fixDates","doc","match","month","val","ifNo","duration","unTag","season","date","not","cardinal","v","time","here","values","replaceWith","has","dateTagger","sectionTagger","timeTagger","shiftTagger","fixUp","oops","d","knownDate","lastTerm","terms","methods","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","tagDate","forEach","fn","FinancialQuarter","isA","Season","Year","notA","Duration","Holiday","Timezone","DateShift","createCommonjsModule","module","exports","getCjsExportFromNamespace","n","fns","isLeapYear","year","isDate","Object","prototype","toString","call","isNaN","valueOf","isArray","input","isObject","zeroPad","str","len","arguments","length","undefined","pad","Array","join","titleCase","toUpperCase","substr","ordinal","i","j","k","toCardinal","String","replace","normalize","toLowerCase","trim","getEpoch","tmp","getTime","epoch","beADate","s","clone","set","formatTimezone","offset","delimiter","absOffset","Math","abs","sign","concat","fns_1","fns_2","fns_3","fns_4","fns_5","fns_6","fns_7","fns_8","fns_9","fns_10","fns_11","fns_12","serialize","getMonth","getDate","getHours","shouldChange","start","end","defaultOffset","Date","bias","getTimezoneOffset","shift","current","summerTime","quickOffset","zones","timezones","obj","tz","console","warn","dst","jul","dec","hem","split","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","data","all","keys","Number","names","before","name","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset","parseOffset_1","local","cities","reduce","h","city","lookupTz","hasOwnProperty","test","id","Error","find","o","millisecond","second","minute","hour","day","week","milliseconds","walk","unit","previous","startUnit","original","diff","halfStep","units","valid","walkTo","getFullYear","seconds","wants","old","silent","walk_1","shortMonths","longMonths","buildMapping","sep","_i","months","short","long","mapping","i18n","parseOffset$1","parseFloat","parseOffset_1$1","parseTime","arr","startOf","ampm","_h","parseTime_1","monthLengths","monthLengths_1","hasDate","max","hasDate_1","months$1","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","strParse","getNow","now","dates","tonight","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","isoOffset","isNegative","floor","ceil","_offset","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","quarter","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","niceYear","niceDay","niceFull","aliases","mdy","dmy","ymd","printFormat","out","indexOf","_","fmt","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","_s","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","unixFmt","chars","quoteOn","push","txt","c","unixFmt_1","units$1","doUnit","endOf","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","msDiff","minutes","hours","weeks","waterfall","reverseDiff","main","reversed","diff$1","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","value","slice","since","isNow","every","rounded","qualified","precise","englishValues","englishValue","nextUnit","nextValue","splice","since_1","north","south","quarters","units$2","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","next","result","every_1","parseDst","epochShift","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","units$3","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","from","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","confirm","want","methods$1","getMilliseconds","getSeconds","getMinutes","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$3","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","millenium","_03Year","methods$4","addMethods","Space","query","isLeapYear$2","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","order$1","keep","dstAwareUnits","keepDate","addMethods$1","SpaceTime","_sum","plus","print","addMethods$2","same","addMethods$3","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","addMethods$4","defineProperty","get","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","filter","whereIts_1","_version","main$1","setToday","extend","version","plugin","src","america","asia","europe","africa","aus","pac","informal","bst","ireland","cet","cest","eet","eest","trt","etc","utc","gmt","sast","acst","acdt","aest","aedt","awst","awdt","acwst","lhst","lhdt","msk","russian","cst","cdt","mst","mdt","ast","adt","est","edt","pst","pdt","ahst","ahdt","hst","nst","ndt","brt","brasília","brasilia","amt","east","easst","vet","pyt","pyst","cot","clst","cldt","uyt","ist","irst","irdt","iranian","pkt","ict","ct","almt","yakt","gst","uae","hkt","wib","wita","idt","israeli","krat","myt","sgt","kst","uzt","vlat","mvt","mut","mht","sst","chst","pgt","iana","formal","lex","numbers","toNumber","adverbs","remove","knownUnits","parseShift","ts","text","hardCoded","daybreak","lunchtime","dinnertime","halfPast","mins","behind","context","timeStr","parseRelative","rel","parseTimezone","Unit","enumerable","writable","Day","Month","Quarter","WeekDay","weekDay","CalendarDate","onlySection","section","Week","namedUnit","Model","define","feb","apr","nov","parseHoliday","spacetimeHoliday","knownWord","parseExplicit","impliedYear","groups","relative","steps","implied","holiday","explicit","require$$7","parseDate","process","env","DEBUG","JSON","stringify","applyShift","applyTime","punt","casual_duration","logic","fromDate","toDate","parseRanges","map","keepTags","keepCase","toLongForm","abbrevs","toShortForm","Doc","world","addTags","tags","addWords","words","postProcess","tagger","Dates","list","r","clauses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;EACA,IAAMA,KAAK,GAAG,oDAAd;;EACA,IAAMC,QAAQ,GAAG,mDAAjB;;EACA,IAAMC,QAAQ,GAAG,uDAAjB;;EACA,IAAMC,OAAO,GAAG,oCAAhB;EAGA;;EACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAIC,MAAJ,EAAe;EAC7B,MAAID,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB;EACD;;EACD,MAAIC,IAAI,GAAGH,CAAC,CAACI,QAAF,GAAa,CAAb,CAAX;;EACA,MAAID,IAAJ,EAAU;EACR,QAAIE,GAAG,GAAGC,QAAQ,CAACH,IAAI,CAACI,KAAN,EAAa,EAAb,CAAlB;;EACA,QAAIF,GAAG,IAAIA,GAAG,GAAG,IAAb,IAAqBA,GAAG,GAAG,IAA/B,EAAqC;EACnCL,MAAAA,CAAC,CAACQ,GAAF,CAAM,MAAN,EAAcP,MAAd;EACD;EACF;EACF,CAXD;;;EAaA,IAAMQ,WAAW,GAAG,SAAdA,WAAc,CAACT,CAAD,EAAIC,MAAJ,EAAe;EACjC,MAAID,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB;EACD;;EACD,MAAIC,IAAI,GAAGH,CAAC,CAACI,QAAF,GAAa,CAAb,CAAX;;EACA,MAAID,IAAJ,EAAU;EACR,QAAIE,GAAG,GAAGC,QAAQ,CAACH,IAAI,CAACI,KAAN,EAAa,EAAb,CAAlB;;EACA,QAAIF,GAAG,IAAIA,GAAG,GAAG,IAAb,IAAqBA,GAAG,GAAG,IAA/B,EAAqC;EACnCL,MAAAA,CAAC,CAACQ,GAAF,CAAM,MAAN,EAAcP,MAAd;EACD;EACF;EACF,CAXD;;EAaA,IAAMS,QAAQ,GAAG,SAAXA,QAAW,CAAUC,GAAV,EAAe;EAC9BA,EAAAA,GAAG,CAACC,KAAJ,CAAU,sDAAV,EAAkEJ,GAAlE,CAAsE,MAAtE,EAA8E,cAA9E;EACAG,EAAAA,GAAG,CAACC,KAAJ,CAAU,wBAAV,EAAoCJ,GAApC,CAAwC,MAAxC,EAAgD,YAAhD,EAF8B;;EAK9B,MAAIK,KAAK,GAAGF,GAAG,MAAH,CAAO,QAAP,CAAZ;;EACA,MAAIE,KAAK,CAACX,KAAN,KAAgB,IAApB,EAA0B;;EAExBW,IAAAA,KAAK,CAACD,KAAN,kBAA6BJ,GAA7B,CAAiC,MAAjC,EAAyC,wBAAzC,EAFwB;;EAIxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,kBAAZ,EAAgCJ,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EAJwB;;EAMxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,kBAAZ,EAAgCJ,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EANwB;;EAQxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,yBAAZ,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,gBAAnD,EARwB;;EAUxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,mBAAZ,EAAiCJ,GAAjC,CAAqC,MAArC,EAA6C,iBAA7C;EACD,GAjB6B;;;EAoB9B,MAAIM,GAAG,GAAGH,GAAG,MAAH,CAAO,QAAP,CAAV;;EACA,MAAIG,GAAG,CAACZ,KAAJ,KAAc,IAAlB,EAAwB;;EAEtBY,IAAAA,GAAG,CAACF,KAAJ,CAAU,0BAAV,EAAsCG,IAAtC,CAA2C,QAA3C,EAAqDP,GAArD,CAAyD,MAAzD,EAAiE,YAAjE,EAFsB;;EAKtBM,IAAAA,GAAG,CAACF,KAAJ,CAAU,0BAAV,EAAsCG,IAAtC,CAA2C,QAA3C,EAAqDP,GAArD,CAAyD,MAAzD,EAAiE,YAAjE,EALsB;;EAQtBM,IAAAA,GAAG,CAACF,KAAJ,CAAU,uBAAV,QAAsC,OAAtC,EAA+CJ,GAA/C,CAAmD,OAAnD,EAA4D,gBAA5D,EARsB;;EAWtB,QAAIQ,QAAQ,GAAGF,GAAG,MAAH,CAAO,WAAP,CAAf;;EACA,QAAIE,QAAQ,CAACd,KAAT,KAAmB,IAAvB,EAA6B;;EAE3Bc,MAAAA,QAAQ,CAACJ,KAAT,CAAe,sBAAf,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,gBAAnD,EAF2B;;EAI3BQ,MAAAA,QAAQ,CAACJ,KAAT,CAAe,+BAAf,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4D,0BAA5D,EAJ2B;;EAM3BQ,MAAAA,QAAQ,CAACJ,KAAT,WAAkBjB,KAAlB,yBAA6Ca,GAA7C,CAAiD,MAAjD,EAAyD,gBAAzD,EAN2B;;EAQ3BQ,MAAAA,QAAQ,CAACJ,KAAT,CAAe,sBAAf,EAAuCK,KAAvC,CAA6C,MAA7C,EAAqD,eAArD;EACD;EACF,GA3C6B;;;EA8C9B,MAAIC,MAAM,GAAGP,GAAG,MAAH,CAAOb,OAAP,CAAb;;EACA,MAAIoB,MAAM,CAAChB,KAAP,KAAiB,IAArB,EAA2B;EACzBgB,IAAAA,MAAM,CAACN,KAAP,WAAgBjB,KAAhB,eAA0BC,QAA1B,cAAsCE,OAAtC,GAAiDU,GAAjD,CAAqD,MAArD,EAA6D,iBAA7D;EACAU,IAAAA,MAAM,CAACN,KAAP,gBAAqBf,QAArB,iBAAoCC,OAApC,GAA+CU,GAA/C,CAAmD,MAAnD,EAA2D,gBAA3D;EACAU,IAAAA,MAAM,CAACN,KAAP,WAAgBd,OAAhB,cAA2BH,KAA3B,kBAA+Ca,GAA/C,CAAmD,MAAnD,EAA2D,aAA3D;EACD,GAnD6B;;;EAsD9B,MAAIW,IAAI,GAAGR,GAAG,MAAH,CAAO,OAAP,CAAX;;EACA,MAAIQ,IAAI,CAACjB,KAAL,KAAe,IAAnB,EAAyB;;EAEvBiB,IAAAA,IAAI,CAACP,KAAL,CAAW,qBAAX,EAAkCJ,GAAlC,CAAsC,MAAtC,EAA8C,YAA9C,EAFuB;;EAIvBW,IAAAA,IAAI,CAACP,KAAL,WAAchB,QAAd,aAAgCY,GAAhC,CAAoC,MAApC,EAA4C,UAA5C,EAJuB;;EAMvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,oCAAX,EAAiDJ,GAAjD,CAAqD,MAArD,EAA6D,IAA7D,EANuB;;EAQvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,6DAAX,EAA0EJ,GAA1E,CAA8E,MAA9E,EAAsF,UAAtF,EARuB;;EAUvBW,IAAAA,IAAI,CAACP,KAAL,gBAAmBf,QAAnB,gBAAwCW,GAAxC,CAA4C,MAA5C,EAAoD,YAApD,EAVuB;;EAYvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,6BAAX,EAA0CJ,GAA1C,CAA8C,MAA9C,EAAsD,aAAtD,EAZuB;;EAcvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,kCAAX,EAA+CJ,GAA/C,CAAmD,MAAnD,EAA2D,eAA3D,EAduB;;EAgBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,8CAAX,EAA2DQ,GAA3D,CAA+D,QAA/D,EAAyEZ,GAAzE,CAA6E,MAA7E,EAAqF,sBAArF,EAhBuB;;EAkBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,iBAAX,EAA8B,CAA9B,EAAiCK,KAAjC,CAAuC,MAAvC,EAA+CA,KAA/C,CAAqD,QAArD,EAA+DT,GAA/D,CAAmE,MAAnE,EAA2E,SAA3E,EAlBuB;;EAoBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,+BAAX,EAA4CG,IAA5C,CAAiD,WAAjD,EAA8DP,GAA9D,CAAkE,MAAlE,EAA0E,gBAA1E;EACD,GA5E6B;;;EA+E9B,MAAIa,QAAQ,GAAGV,GAAG,MAAH,CAAO,WAAP,CAAf;;EACA,MAAIU,QAAQ,CAACnB,KAAT,KAAmB,IAAvB,EAA6B;EAC3B,QAAIoB,CAAC,GAAGD,QAAQ,CAACT,KAAT,6BAA2C,CAA3C,CAAR;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,iBAAJ,CAAP,CAF2B;;EAI3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,uBAAqC,CAArC,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,WAAJ,CAAP,CAL2B;;EAO3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,8BAA4C,CAA5C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,kBAAJ,CAAP,CAR2B;;EAU3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,wCAAsD,CAAtD,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,kBAAJ,CAAP,CAX2B;;EAa3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,kEAAgF,CAAhF,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAd2B;;EAgB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,2BAAf,EAA4C,CAA5C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAjB2B;;EAmB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,8BAAf,EAA+C,CAA/C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CApB2B;;EAsB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,sBAAf,EAAuC,CAAvC,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAvB2B;;EAyB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,yBAAf,EAA0C,CAA1C,CAAJ;EACAH,IAAAA,WAAW,CAACa,CAAD,EAAI,SAAJ,CAAX;EACD;;EAED,MAAIC,IAAI,GAAGZ,GAAG,MAAH,CAAO,OAAP,CAAX;;EACA,MAAIY,IAAI,CAACrB,KAAL,KAAe,IAAnB,EAAyB;;EAEvBqB,IAAAA,IAAI,CAACX,KAAL,CAAW,oCAAX,EAAiDJ,GAAjD,CAAqD,MAArD,EAA6D,kBAA7D,EAFuB;;EAIvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,iBAAX,EAA8BQ,GAA9B,CAAkC,OAAlC,EAA2CZ,GAA3C,CAA+C,MAA/C,EAAuD,YAAvD,EAJuB;;EAMvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,4CAAX,EAAyD,CAAzD,EAA4DJ,GAA5D,CAAgE,MAAhE,EAAwE,UAAxE,EANuB;;EAQvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,uBAAX,EAAoC,CAApC,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,eAAnD;EACD;;EAED,SAAOG,GAAP;EACD,CA1HD;;EA2HA,YAAc,GAAGD,QAAjB;;EC7JA,IAAMc,IAAI,GAAG,aAAb;;EAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAUd,GAAV,EAAe;;EAE5BA,EAAAA,GAAG,CAACC,KAAJ,CAAU,qBAAV,EAAiC,CAAjC,EAAoCc,WAApC,CAAgD,GAAhD,EAAqDlB,GAArD,CAAyD,UAAzD,EAAqEgB,IAArE;;EACA,MAAIb,GAAG,CAACgB,GAAJ,CAAQ,QAAR,CAAJ,EAAuB;;EAErBhB,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4DgB,IAA5D,EAFqB;;EAIrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4DgB,IAA5D,EAJqB;;EAMrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2BAAV,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmDgB,IAAnD,EANqB;;EAQrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,6DAAV,EAAyEJ,GAAzE,CAA6E,MAA7E,EAAqFgB,IAArF,EARqB;;EAUrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,cAAV,EAA0BJ,GAA1B,CAA8B,MAA9B,EAAsCgB,IAAtC,EAVqB;;EAYrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,cAAV,EAA0BJ,GAA1B,CAA8B,MAA9B,EAAsCgB,IAAtC,EAZqB;;EAcrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2BAAV,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmDgB,IAAnD,EAdqB;;EAgBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,0CAAV,EAAsDJ,GAAtD,CAA0D,MAA1D,EAAkEgB,IAAlE,EAhBqB;;EAkBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,yCAAV,EAAqDJ,GAArD,CAAyD,MAAzD,EAAiEgB,IAAjE,EAlBqB;;EAoBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,6CAAV,EAAyDJ,GAAzD,CAA6D,MAA7D,EAAqEgB,IAArE,EApBqB;;EAsBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,MAAjC,EAAyCgB,IAAzC;EACD;;EACD,SAAOb,GAAP;EACD,CA5BD;;EA6BA,aAAc,GAAGc,MAAjB;;EC/BA,IAAMD,MAAI,GAAG,aAAb;;EAEA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAASjB,GAAT,EAAc;EAE/BA,EAAAA,GAAG,CAACC,KAAJ,CAAU,qEAAV,EAAiFA,KAAjF,CAAuF,OAAvF,EAAgGJ,GAAhG,CAAoG,QAApG,EAA8GgB,MAA9G;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,eAAV,EAA2BJ,GAA3B,CAA+B,kBAA/B,EAAmDgB,MAAnD;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,kCAAV,EAA8CJ,GAA9C,CAAkD,kBAAlD,EAAsEgB,MAAtE;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,iCAAV,EAA6CJ,GAA7C,CAAiD,QAAjD,EAA2DgB,MAA3D;;EAEA,MAAIb,GAAG,CAACgB,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBhB,IAAAA,GAAG,CAACC,KAAJ,CAAU,0BAAV,EAAsCJ,GAAtC,CAA0C,MAA1C,EAAkDgB,MAAlD,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,gCAAV,EAA4CJ,GAA5C,CAAgD,MAAhD,EAAwDgB,MAAxD,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2DAAV,EAAuEJ,GAAvE,CAA2E,MAA3E,EAAmFgB,MAAnF,EANoB;;EAQpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,QAAV,EAAoBJ,GAApB,CAAwB,MAAxB,EAAgCgB,MAAhC,EARoB;;EAUpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2DAAV,EAAuEJ,GAAvE,CAA2E,MAA3E,EAAmFgB,MAAnF,EAVoB;;EAYpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,aAAV,EAAyBJ,GAAzB,CAA6B,MAA7B,EAAqCgB,MAArC,EAZoB;;EAcpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,sBAAV,EAAkCJ,GAAlC,CAAsC,MAAtC,EAA8CgB,MAA9C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,uBAAV,EAAmCJ,GAAnC,CAAuC,MAAvC,EAA+CgB,MAA/C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,MAAjC,EAAyCgB,MAAzC,EAhBoB;;EAkBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,gFAAV,EAA4FJ,GAA5F,CAAgG,MAAhG,EAAwGgB,MAAxG,EAlBoB;;EAoBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,4BAAV,EAAwCJ,GAAxC,CAA4C,MAA5C,EAAoDgB,MAApD,EApBoB;;EAsBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2CAAV,EAAuDJ,GAAvD,CAA2D,MAA3D,EAAmEgB,MAAnE;EACD;;EACD,SAAOb,GAAP;EACD,CAhCD;;EAiCA,YAAc,GAAGiB,UAAjB;;ECnCA,IAAMJ,MAAI,GAAG,gBAAb;;EAEA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAASlB,GAAT,EAAc;EAClC,MAAIA,GAAG,CAACgB,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBhB,IAAAA,GAAG,CAACC,KAAJ,CAAU,wEAAV,EAAoFJ,GAApF,CAAwF,MAAxF,EAAgGgB,MAAhG,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,mCAAV,EAA+CJ,GAA/C,CAAmD,MAAnD,EAA2DgB,MAA3D,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,yEAAV,EAAqFJ,GAArF,CAAyF,MAAzF,EAAiGgB,MAAjG,EANoB;;EAQpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,kBAAV,EAA8BJ,GAA9B,CAAkC,MAAlC,EAA0CgB,MAA1C;EACD;;EACD,SAAOb,GAAP;EACD,CAZD;;EAaA,eAAc,GAAGkB,aAAjB;;ECfA,IAAML,MAAI,GAAG,aAAb;;EAGA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAAUnB,GAAV,EAAe;;EAEhC,MAAIA,GAAG,CAACgB,GAAJ,CAAQ,WAAR,KAAwB,CAAChB,GAAG,CAACgB,GAAJ,CAAQ,QAAR,CAA7B,EAAgD;EAC9ChB,IAAAA,GAAG,CAACC,KAAJ,CAAU,qDAAV,EAAiEJ,GAAjE,CAAqE,MAArE,EAA6EgB,MAA7E;EACD,GAJ+B;;;EAMhC,MAAIb,GAAG,CAACgB,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBhB,IAAAA,GAAG,CAACC,KAAJ,CAAU,kDAAV,EAA8DJ,GAA9D,CAAkE,UAAlE,EAA8EgB,MAA9E,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,UAAjC,EAA6CgB,MAA7C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,UAAjC,EAA6CgB,MAA7C;EAEAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,+BAAV,EAA2CJ,GAA3C,CAA+C,UAA/C,EAA2DgB,MAA3D,EAPoB;;;;EAarB;;EACD,SAAOb,GAAP;EACD,CArBD;;EAsBA,WAAc,GAAGmB,UAAjB;;ECzBA,IAAMN,MAAI,GAAG,cAAb;;EAEA,IAAMO,WAAW,GAAG,SAAdA,WAAc,CAAUpB,GAAV,EAAe;EACjC,MAAIA,GAAG,CAACgB,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBhB,IAAAA,GAAG,CAACC,KAAJ,CAAU,6CAAV,EAAyDJ,GAAzD,CAA6D,YAA7D,EAA2EgB,MAA3E,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,wBAAV,EAAoCJ,GAApC,CAAwC,YAAxC,EAAsDgB,MAAtD,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,qCAAV,EAAiDJ,GAAjD,CAAqD,YAArD,EAAmEgB,MAAnE;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,YAApD,EAAkEgB,MAAlE,EAPoB;EASrB;;EACD,SAAOb,GAAP;EACD,CAZD;;EAaA,aAAc,GAAGoB,WAAjB;;ECfA,IAAMP,MAAI,GAAG,YAAb;;EAEA,IAAMQ,KAAK,GAAG,SAARA,KAAQ,CAAUrB,GAAV,EAAe;;EAE3B,MAAIA,GAAG,CAACgB,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpB,QAAIM,IAAI,GAAGtB,GAAG,CAACC,KAAJ,CAAU,kBAAV,CAAX;;EACA,QAAIqB,IAAI,CAAC/B,KAAL,IAAc,CAAC+B,IAAI,CAACN,GAAL,CAAS,MAAT,CAAnB,EAAqC;EACnCM,MAAAA,IAAI,CAACrB,KAAL,CAAW,SAAX,EAAsBK,KAAtB,CAA4B,MAA5B,EAAoC,WAApC;EACD;;EAED,QAAIiB,CAAC,GAAGvB,GAAG,CAACC,KAAJ,CAAU,QAAV,CAAR,CAPoB;;EASpBsB,IAAAA,CAAC,CAACtB,KAAF,CAAQ,OAAR,EAAiBK,KAAjB,CAAuB,MAAvB,EAA+B,SAA/B,EAToB;;EAWpBiB,IAAAA,CAAC,CAACtB,KAAF,CAAQ,wCAAR,EAAkDK,KAAlD,CAAwD,MAAxD,EAAgE,mBAAhE;EAEA,QAAIkB,SAAS,GAAG,4BAAhB;;EACA,QAAID,CAAC,CAACP,GAAF,CAAMQ,SAAN,CAAJ,EAAsB;;EAEpBD,MAAAA,CAAC,CAACtB,KAAF,WAAWuB,SAAX,iBAAkClB,KAAlC,CAAwC,MAAxC,EAAgD,aAAhD,EAFoB;;EAIpBiB,MAAAA,CAAC,CAACtB,KAAF,qBAAqBuB,SAArB,QAAmC,CAAnC,EAAsClB,KAAtC,CAA4C,MAA5C,EAAoD,aAApD,EAJoB;;EAMpBiB,MAAAA,CAAC,CAACtB,KAAF,qBAAqBuB,SAArB,QAAmClB,KAAnC,CAAyC,MAAzC,EAAiDmB,QAAjD,GAA4D5B,GAA5D,CAAgE,MAAhE,EAAwE,eAAxE,EANoB;;;;;;EAapB0B,MAAAA,CAAC,CAACtB,KAAF,kCAAkCuB,SAAlC,QAAgDlB,KAAhD,CAAsD,MAAtD,EAA8DmB,QAA9D,GAAyE5B,GAAzE,CAA6E,MAA7E,EAAqF,sBAArF;EACD,KA5BmB;;;EA8BpB0B,IAAAA,CAAC,CAACtB,KAAF,kBAAyBK,KAAzB,CAA+B,MAA/B,EAAuCO,MAAvC,EA9BoB;;EAgCpBU,IAAAA,CAAC,CAACtB,KAAF,kBAAyByB,KAAzB,CAA+B,CAA/B,EAAkCpB,KAAlC,CAAwC,MAAxC,EAAgD,eAAhD,EAhCoB;;EAkCpBiB,IAAAA,CAAC,CAACtB,KAAF,wBAA+BJ,GAA/B,CAAmC,MAAnC,EAA2CgB,MAA3C,EAlCoB;;;;EAsCpBU,IAAAA,CAAC,CAACtB,KAAF,6BAAoCyB,KAApC,CAA0C,CAA1C,EAA6CpB,KAA7C,CAAmD,MAAnD,EAA2DO,MAA3D;;EAEA,QAAIU,CAAC,CAACP,GAAF,CAAM,kBAAN,CAAJ,EAA+B;;EAE7BO,MAAAA,CAAC,CAACtB,KAAF,sCAA6CyB,KAA7C,CAAmD,CAAnD,EAAsDpB,KAAtD,CAA4D,MAA5D,EAAoEO,MAApE,EAF6B;;EAI7BU,MAAAA,CAAC,CAACtB,KAAF,0CAAiDyB,KAAjD,CAAuD,CAAvD,EAA0DpB,KAA1D,CAAgE,MAAhE,EAAwEO,MAAxE;EACD,KA7CmB;;;EA+CpB,QAAIU,CAAC,CAACP,GAAF,CAAM,uCAAN,MAAmD,KAAvD,EAA8D;EAC5DO,MAAAA,CAAC,CAACtB,KAAF,CAAQ,iCAAR,EAA2CyB,KAA3C,CAAiD,CAAjD,EAAoDpB,KAApD,CAA0D,MAA1D,EAAkEO,MAAlE;EACD,KAjDmB;;;EAmDpB,QAAIU,CAAC,CAACP,GAAF,CAAM,UAAN,KAAqB,CAACO,CAAC,CAACP,GAAF,CAAM,OAAN,CAA1B,EAA0C;EACxCO,MAAAA,CAAC,CAACjB,KAAF,CAAQ,MAAR,EAAgBO,MAAhB;EACD,KArDmB;;;EAuDpB,QAAIU,CAAC,CAACP,GAAF,CAAM,eAAN,KAA0B,CAACO,CAAC,CAACP,GAAF,CAAM,YAAN,CAA3B,IAAkD,CAACO,CAAC,CAACP,GAAF,CAAM,WAAN,CAAvD,EAA2E;EACzEO,MAAAA,CAAC,CAACtB,KAAF,CAAQ,QAAR,EAAkBwB,QAAlB,GAA6BnB,KAA7B,CAAmC,MAAnC,EAA2C,aAA3C;EACD,KAzDmB;;;EA2DpB,QAAIiB,CAAC,CAACP,GAAF,CAAM,2CAAN,KAAsD,CAACO,CAAC,CAACP,GAAF,CAAM,kBAAN,CAA3D,EAAsF;EACpFO,MAAAA,CAAC,CAACtB,KAAF,CAAQ,2CAAR,EAAqDK,KAArD,CAA2D,OAA3D,EAAoE,WAApE;EACD,KA7DmB;;;EA+DpB,QAAIiB,CAAC,CAACP,GAAF,CAAM,gBAAN,CAAJ,EAA6B;EAC3BO,MAAAA,CAAC,CAACtB,KAAF,CAAQ,OAAR,EAAiBK,KAAjB,CAAuB,OAAvB,EAAgC,oBAAhC;EACD,KAjEmB;;;;;EAsErB;;EACD,SAAON,GAAP;EACD,CA1ED;;EA2EA,YAAc,GAAGqB,KAAjB;;EC7EA,IAAMM,OAAO,GAAG,CACdC,QADc,EAEdC,SAFc,EAGdC,QAHc,EAIdC,WAJc,EAKdC,OALc,EAMdC,SANc,EAOdC,QAPc,CAAhB;;EAUA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAUnC,GAAV,EAAe;EAC7B2B,EAAAA,OAAO,CAACS,OAAR,CAAgB,UAACC,EAAD;EAAA,WAAQA,EAAE,CAACrC,GAAD,CAAV;EAAA,GAAhB;EACA,SAAOA,GAAP;EACD,CAHD;;EAIA,UAAc,GAAGmC,OAAjB;;ECdA,SAAc,GAAG;EACfG,EAAAA,gBAAgB,EAAE;EAChBC,IAAAA,GAAG,EAAE;EADW,GADH;;EAKfC,EAAAA,MAAM,EAAE;EACND,IAAAA,GAAG,EAAE;EADC,GALO;;EASfE,EAAAA,IAAI,EAAE;EACJF,IAAAA,GAAG,EAAE,CAAC,MAAD,CADD;EAEJG,IAAAA,IAAI,EAAE;EAFF,GATS;;EAcfC,EAAAA,QAAQ,EAAE;EACRJ,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADG,GAdK;;EAkBfK,EAAAA,OAAO,EAAE;EACPL,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADE,GAlBM;;EAsBfM,EAAAA,QAAQ,EAAE;EACRN,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADG,GAtBK;;EA0BfO,EAAAA,SAAS,EAAE;EACTP,IAAAA,GAAG,EAAE,CAAC,MAAD;EADI;EA1BI,CAAjB;;ECAA;EACA,SAASQ,oBAAT,CAA8BV,EAA9B,EAAkCW,MAAlC,EAA0C;EACzC,SAAOA,MAAM,GAAG;EAAEC,IAAAA,OAAO,EAAE;EAAX,GAAT,EAA0BZ,EAAE,CAACW,MAAD,EAASA,MAAM,CAACC,OAAhB,CAA5B,EAAsDD,MAAM,CAACC,OAApE;EACA;;EAED,SAASC,yBAAT,CAAoCC,CAApC,EAAuC;EACtC,SAAOA,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAN,IAAqBA,CAA5B;EACA;;EAED,IAAIC,GAAG,GAAGL,oBAAoB,CAAC,UAAUC,MAAV,EAAkBC,OAAlB,EAA2B;EACxD;EACAA,EAAAA,OAAO,CAACI,UAAR,GAAqB,UAAUC,IAAV,EAAgB;EACnC,WAAOA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAAjC,IAAsCA,IAAI,GAAG,GAAP,KAAe,CAA5D;EACD,GAFD,CAFwD;;;EAOxDL,EAAAA,OAAO,CAACM,MAAR,GAAiB,UAAUhC,CAAV,EAAa;EAC5B,WAAOiC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BpC,CAA/B,MAAsC,eAAtC,IAAyD,CAACqC,KAAK,CAACrC,CAAC,CAACsC,OAAF,EAAD,CAAtE;EACD,GAFD;;EAIAZ,EAAAA,OAAO,CAACa,OAAR,GAAkB,UAAUC,KAAV,EAAiB;EACjC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,gBAAjD;EACD,GAFD;;EAIAd,EAAAA,OAAO,CAACe,QAAR,GAAmB,UAAUD,KAAV,EAAiB;EAClC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,iBAAjD;EACD,GAFD;;EAIAd,EAAAA,OAAO,CAACgB,OAAR,GAAkB,UAAUC,GAAV,EAAe;EAC/B,QAAIC,GAAG,GAAGC,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAA9E;EACA,QAAIG,GAAG,GAAG,GAAV;EACAL,IAAAA,GAAG,GAAGA,GAAG,GAAG,EAAZ;EACA,WAAOA,GAAG,CAACG,MAAJ,IAAcF,GAAd,GAAoBD,GAApB,GAA0B,IAAIM,KAAJ,CAAUL,GAAG,GAAGD,GAAG,CAACG,MAAV,GAAmB,CAA7B,EAAgCI,IAAhC,CAAqCF,GAArC,IAA4CL,GAA7E;EACD,GALD;;EAOAjB,EAAAA,OAAO,CAACyB,SAAR,GAAoB,UAAUR,GAAV,EAAe;EACjC,QAAI,CAACA,GAAL,EAAU;EACR,aAAO,EAAP;EACD;;EAED,WAAOA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA9B;EACD,GAND;;EAQA3B,EAAAA,OAAO,CAAC4B,OAAR,GAAkB,UAAUC,CAAV,EAAa;EAC7B,QAAIC,CAAC,GAAGD,CAAC,GAAG,EAAZ;EACA,QAAIE,CAAC,GAAGF,CAAC,GAAG,GAAZ;;EAEA,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,WAAOA,CAAC,GAAG,IAAX;EACD,GAjBD,CAlCwD;;;EAsDxD7B,EAAAA,OAAO,CAACgC,UAAR,GAAqB,UAAUf,GAAV,EAAe;EAClCA,IAAAA,GAAG,GAAGgB,MAAM,CAAChB,GAAD,CAAZ;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,IAAtC,CAAN;EACA,WAAOxF,QAAQ,CAACuE,GAAD,EAAM,EAAN,CAAf;EACD,GAJD,CAtDwD;;;EA6DxDjB,EAAAA,OAAO,CAACmC,SAAR,GAAoB,YAAY;EAC9B,QAAIlB,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACAF,IAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,GAAkBC,IAAlB,EAAN;EACApB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,GAApB,CAAN,CAH8B;;EAK9BjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACAjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;;EAEA,QAAIjB,GAAG,KAAK,KAAZ,EAAmB;EACjB,aAAO,MAAP;EACD;;EAED,WAAOA,GAAP;EACD,GAbD;;EAeAjB,EAAAA,OAAO,CAACsC,QAAR,GAAmB,UAAUC,GAAV,EAAe;EAChC;EACA,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3B,aAAOA,GAAP;EACD,KAJ+B;;;EAOhC,QAAIvC,OAAO,CAACM,MAAR,CAAeiC,GAAf,CAAJ,EAAyB;EACvB,aAAOA,GAAG,CAACC,OAAJ,EAAP;EACD;;EAED,QAAID,GAAG,CAACE,KAAR,EAAe;EACb,aAAOF,GAAG,CAACE,KAAX;EACD;;EAED,WAAO,IAAP;EACD,GAhBD,CA5EwD;;;EA+FxDzC,EAAAA,OAAO,CAAC0C,OAAR,GAAkB,UAAUpE,CAAV,EAAaqE,CAAb,EAAgB;EAChC,QAAI3C,OAAO,CAACe,QAAR,CAAiBzC,CAAjB,MAAwB,KAA5B,EAAmC;EACjC,aAAOqE,CAAC,CAACC,KAAF,GAAUC,GAAV,CAAcvE,CAAd,CAAP;EACD;;EAED,WAAOA,CAAP;EACD,GAND;;EAQA0B,EAAAA,OAAO,CAAC8C,cAAR,GAAyB,UAAUC,MAAV,EAAkB;EACzC,QAAIC,SAAS,GAAG7B,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAApF;EACA,QAAI8B,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,CAAhB;EACA,QAAIK,IAAI,GAAGL,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;EACA,WAAO,GAAGM,MAAH,CAAUD,IAAV,EAAgBC,MAAhB,CAAuBrD,OAAO,CAACgB,OAAR,CAAgBiC,SAAhB,CAAvB,EAAmDI,MAAnD,CAA0DL,SAA1D,EAAqE,IAArE,CAAP;EACD,GALD;EAMD,CA7G6B,CAA9B;EA8GA,IAAIM,KAAK,GAAGnD,GAAG,CAACC,UAAhB;EACA,IAAImD,KAAK,GAAGpD,GAAG,CAACG,MAAhB;EACA,IAAIkD,KAAK,GAAGrD,GAAG,CAACU,OAAhB;EACA,IAAI4C,KAAK,GAAGtD,GAAG,CAACY,QAAhB;EACA,IAAI2C,KAAK,GAAGvD,GAAG,CAACa,OAAhB;EACA,IAAI2C,KAAK,GAAGxD,GAAG,CAACsB,SAAhB;EACA,IAAImC,KAAK,GAAGzD,GAAG,CAACyB,OAAhB;EACA,IAAIiC,KAAK,GAAG1D,GAAG,CAAC6B,UAAhB;EACA,IAAI8B,KAAK,GAAG3D,GAAG,CAACgC,SAAhB;EACA,IAAI4B,MAAM,GAAG5D,GAAG,CAACmC,QAAjB;EACA,IAAI0B,MAAM,GAAG7D,GAAG,CAACuC,OAAjB;EACA,IAAIuB,MAAM,GAAG9D,GAAG,CAAC2C,cAAjB;EAEA,IAAI9B,OAAO,GAAGb,GAAG,CAACa,OAAlB;;EAEA,IAAIkD,SAAS,GAAG,SAASA,SAAT,CAAmB5F,CAAnB,EAAsB;EACpC,SAAO0C,OAAO,CAAC1C,CAAC,CAAC6F,QAAF,KAAe,CAAhB,CAAP,GAA4B,GAA5B,GAAkCnD,OAAO,CAAC1C,CAAC,CAAC8F,OAAF,EAAD,CAAzC,GAAyD,GAAzD,GAA+DpD,OAAO,CAAC1C,CAAC,CAAC+F,QAAF,EAAD,CAA7E;EACD,CAFD;EAGA;;;EAGA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsB7B,KAAtB,EAA6B8B,KAA7B,EAAoCC,GAApC,EAAyCC,aAAzC,EAAwD;EACzE;EACA;EACA;EACA,MAAInG,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAT,CAAR,CAJyE;;EAMzE,MAAIkC,IAAI,GAAGrG,CAAC,CAACsG,iBAAF,MAAyB,CAApC;EACA,MAAIC,KAAK,GAAGF,IAAI,GAAGF,aAAa,GAAG,EAAnC,CAPyE;;EASzEI,EAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CATyE;;EAWzEvG,EAAAA,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAK,GAAGoC,KAAjB,CAAJ;EACA,MAAIC,OAAO,GAAGZ,SAAS,CAAC5F,CAAD,CAAvB,CAZyE;;EAczE,MAAIwG,OAAO,IAAIP,KAAf,EAAsB;EACpB;EACA,QAAIO,OAAO,GAAGN,GAAd,EAAmB;EACjB,aAAO,IAAP;EACD;EACF;;EAED,SAAO,KAAP;EACD,CAtBD;;EAwBA,IAAIO,UAAU,GAAGT,YAAjB;;EAIA,IAAIU,WAAW,GAAG,SAASA,WAAT,CAAqBrC,CAArB,EAAwB;EACxC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;EACA,MAAIC,GAAG,GAAGF,KAAK,CAACtC,CAAC,CAACyC,EAAH,CAAf;;EAEA,MAAID,GAAG,KAAK9D,SAAZ,EAAuB;EACrBgE,IAAAA,OAAO,CAACC,IAAR,CAAa,qCAAqC3C,CAAC,CAACyC,EAApD;EACA,WAAO,CAAP;EACD;;EAED,MAAID,GAAG,CAACI,GAAJ,KAAYlE,SAAhB,EAA2B;EACzB,WAAO8D,GAAG,CAACpC,MAAX;EACD,GAXuC;;;EAcxC,MAAIyC,GAAG,GAAGL,GAAG,CAACpC,MAAd;EACA,MAAI0C,GAAG,GAAGN,GAAG,CAACpC,MAAJ,GAAa,CAAvB,CAfwC;;EAiBxC,MAAIoC,GAAG,CAACO,GAAJ,KAAY,GAAhB,EAAqB;EACnBD,IAAAA,GAAG,GAAGD,GAAG,GAAG,CAAZ;EACD;;EAED,MAAIG,KAAK,GAAGR,GAAG,CAACI,GAAJ,CAAQI,KAAR,CAAc,IAAd,CAAZ;EACA,MAAIC,QAAQ,GAAGb,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUkD,KAAK,CAAC,CAAD,CAAf,EAAoBA,KAAK,CAAC,CAAD,CAAzB,EAA8BH,GAA9B,CAAzB;;EAEA,MAAII,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAOJ,GAAP;EACD;;EAED,SAAOC,GAAP;EACD,CA7BD;;EA+BA,IAAII,KAAK,GAAGb,WAAZ;EAEA,IAAIc,MAAM,GAAG;EACZ,SAAO,mBADK;EAEZ,SAAO,yDAFK;EAGZ,8BAA4B,+CAHhB;EAIZ,WAAS,kBAJG;EAKZ,SAAO,+DALK;EAMZ,4BAA0B,cANd;EAOZ,SAAO,mKAPK;EAQZ,YAAU,SARE;EASZ,SAAO,gCATK;EAUZ,SAAO,2IAVK;EAWZ,SAAO,WAXK;EAYZ,SAAO,sGAZK;EAaZ,WAAS,4BAbG;EAcZ,SAAO,uBAdK;EAeZ,SAAO,uIAfK;EAgBZ,YAAU,wBAhBE;EAiBZ,WAAS,gCAjBG;EAkBZ,SAAO,WAlBK;EAmBZ,SAAO,4HAnBK;EAoBZ,8BAA4B,UApBhB;EAqBZ,WAAS,SArBG;EAsBZ,SAAO,yBAtBK;EAuBZ,4BAA0B,+IAvBd;EAwBZ,4BAA0B,uBAxBd;EAyBZ,4BAA0B,UAzBd;EA0BZ,4BAA0B,wBA1Bd;EA2BZ,4BAA0B,iBA3Bd;EA4BZ,4BAA0B,SA5Bd;EA6BZ,4BAA0B,YA7Bd;EA8BZ,SAAO,uOA9BK;EA+BZ,4BAA0B,UA/Bd;EAgCZ,SAAO,sFAhCK;EAiCZ,4BAA0B,oWAjCd;EAkCZ,SAAO,4EAlCK;EAmCZ,4BAA0B,YAnCd;EAoCZ,SAAO,qBApCK;EAqCZ,4BAA0B,yBArCd;EAsCZ,4BAA0B,4GAtCd;EAuCZ,SAAO,kHAvCK;EAwCZ,UAAQ,eAxCI;EAyCZ,6BAA2B,SAzCf;EA0CZ,6BAA2B,cA1Cf;EA2CZ,UAAQ,yBA3CI;EA4CZ,6BAA2B,sCA5Cf;EA6CZ,6BAA2B,SA7Cf;EA8CZ,UAAQ,8GA9CI;EA+CZ,gCAA8B,YA/ClB;EAgDZ,UAAQ,8BAhDI;EAiDZ,UAAQ,uFAjDI;EAkDZ,+BAA6B,YAlDjB;EAmDZ,6BAA2B,qFAnDf;EAoDZ,UAAQ,sDApDI;EAqDZ,UAAQ,8FArDI;EAsDZ,+BAA6B,mBAtDjB;EAuDZ,4BAA0B,yBAvDd;EAwDZ,SAAO,+PAxDK;EAyDZ,6BAA2B,eAzDf;EA0DZ,UAAQ,YA1DI;EA2DZ,YAAU,cA3DE;EA4DZ,6BAA2B,4DA5Df;EA6DZ,UAAQ,aA7DI;EA8DZ,6BAA2B,oHA9Df;EA+DZ,UAAQ,iDA/DI;EAgEZ,6BAA2B,0BAhEf;EAiEZ,6BAA2B,mCAjEf;EAkEZ,6BAA2B,oGAlEf;EAmEZ,UAAQ,kJAnEI;EAoEZ,UAAQ,4BApEI;EAqEZ,6BAA2B,gEArEf;EAsEZ,6BAA2B,gBAtEf;EAuEZ,6BAA2B,0GAvEf;EAwEZ,UAAQ,8GAxEI;EAyEZ,6BAA2B,WAzEf;EA0EZ,6BAA2B,0BA1Ef;EA2EZ,6BAA2B,YA3Ef;EA4EZ,6BAA2B,yBA5Ef;EA6EZ,UAAQ,0BA7EI;EA8EZ,6BAA2B,sBA9Ef;EA+EZ,6BAA2B,qLA/Ef;EAgFZ,6BAA2B,UAhFf;EAiFZ,UAAQ,kVAjFI;EAkFZ,UAAQ,sHAlFI;EAmFZ,6BAA2B,0EAnFf;EAoFZ,UAAQ,yHApFI;EAqFZ,UAAQ,aArFI;EAsFZ,6BAA2B,WAtFf;EAuFZ,6BAA2B,YAvFf;EAwFZ,UAAQ,2BAxFI;EAyFZ,+BAA6B,2BAzFjB;EA0FZ,UAAQ,cA1FI;EA2FZ,WAAS,yCA3FG;EA4FZ,WAAS;EA5FG,CAAb;;EA+FA,IAAIC,QAAQ,gBAAgBxF,MAAM,CAACyF,MAAP,CAAc;EACzCC,EAAAA,SAAS,EAAE,IAD8B;EAEzC,aAAWH;EAF8B,CAAd,CAA5B;;;EAMA,IAAII,SAAS,GAAG,CAAC,QAAD,EAAW,SAAX,EAAsB,MAAtB,EAA8B,UAA9B,EAA0C,WAA1C,EAAuD,QAAvD,EAAiE,QAAjE,EAA2E,OAA3E,EAAoF,QAApF,EAA8F,QAA9F,EAAwG,QAAxG,EAAkH,SAAlH,EAA6H,YAA7H,EAA2I,KAA3I,CAAhB;EAEA,IAAIC,IAAI,GAAGlG,yBAAyB,CAAC8F,QAAD,CAApC;EAEA,IAAIK,GAAG,GAAG,EAAV;EACA7F,MAAM,CAAC8F,IAAP,CAAYF,IAAZ,EAAkBhH,OAAlB,CAA0B,UAAU4C,CAAV,EAAa;EACrC,MAAI4D,KAAK,GAAG5D,CAAC,CAAC4D,KAAF,CAAQ,GAAR,CAAZ;EACA,MAAIR,GAAG,GAAG;EACRpC,IAAAA,MAAM,EAAEuD,MAAM,CAACX,KAAK,CAAC,CAAD,CAAN,CADN;EAERD,IAAAA,GAAG,EAAEC,KAAK,CAAC,CAAD;EAFF,GAAV;;EAKA,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;EACZR,IAAAA,GAAG,CAACI,GAAJ,GAAUI,KAAK,CAAC,CAAD,CAAf;EACD;;EAED,MAAIY,KAAK,GAAGJ,IAAI,CAACpE,CAAD,CAAJ,CAAQ4D,KAAR,CAAc,GAAd,CAAZ;EACAY,EAAAA,KAAK,CAACpH,OAAN,CAAc,UAAU8B,GAAV,EAAe;EAC3BA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,aAAZ,EAA2B,UAAUsE,MAAV,EAAkB/J,GAAlB,EAAuB;EACtDA,MAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;EACA,aAAOyJ,SAAS,CAACzJ,GAAD,CAAT,GAAiB,GAAxB;EACD,KAHK,CAAN;EAIA2J,IAAAA,GAAG,CAACnF,GAAD,CAAH,GAAWkE,GAAX;EACD,GAND;EAOD,CAnBD;EAoBAiB,GAAG,CAAC,KAAD,CAAH,GAAa;EACXrD,EAAAA,MAAM,EAAE,CADG;EAEX2C,EAAAA,GAAG,EAAE,GAFM;;EAAA,CAAb;;EAMA,KAAK,IAAI7D,CAAC,GAAG,CAAC,EAAd,EAAkBA,CAAC,IAAI,EAAvB,EAA2BA,CAAC,IAAI,GAAhC,EAAqC;EACnC,MAAIpF,GAAG,GAAGoF,CAAV;;EAEA,MAAIpF,GAAG,GAAG,CAAV,EAAa;EACXA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAIgK,IAAI,GAAG,YAAYhK,GAAvB;EACA2J,EAAAA,GAAG,CAACK,IAAD,CAAH,GAAY;EACV1D,IAAAA,MAAM,EAAElB,CAAC,GAAG,CAAC,CADH;EAEV;EACA6D,IAAAA,GAAG,EAAE,GAHK;;EAAA,GAAZ;EAMAe,EAAAA,IAAI,GAAG,YAAYhK,GAAnB,CAdmC;;EAgBnC2J,EAAAA,GAAG,CAACK,IAAD,CAAH,GAAY;EACV1D,IAAAA,MAAM,EAAElB,CAAC,GAAG,CAAC,CADH;EAEV6D,IAAAA,GAAG,EAAE;EAFK,GAAZ;EAID;EACD;;;EAGA,IAAIgB,MAAM,GAAGN,GAAb;EAGA;EACA;;EACA,IAAIO,UAAU,GAAG,KAAjB;EACA;;EAEA,IAAIC,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAI,OAAOC,IAAP,KAAgB,WAAhB,IAA+B,OAAOA,IAAI,CAACC,cAAZ,KAA+B,WAAlE,EAA+E;EAC7E,WAAO,IAAP;EACD;;EAED,MAAIC,MAAM,GAAGF,IAAI,CAACC,cAAL,EAAb;;EAEA,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,eAAd,KAAkC,WAAvE,EAAoF;EAClF,WAAO,IAAP;EACD;;EAED,MAAIC,QAAQ,GAAGF,MAAM,CAACC,eAAP,GAAyBE,QAAxC;;EAEA,MAAI,CAACD,QAAL,EAAe;EACb,WAAO,IAAP;EACD;;EAED,SAAOA,QAAQ,CAAC7E,WAAT,EAAP;EACD,CAlBD;;EAoBA,IAAI+E,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,MAAIF,QAAQ,GAAGL,QAAQ,EAAvB;;EAEA,MAAIK,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAON,UAAP;EACD;;EAED,SAAOM,QAAP;EACD,CARD;;;EAWA,IAAIG,SAAS,GAAGD,OAAhB;EAEA,IAAIE,QAAQ,GAAG,oBAAf;EACA,IAAIC,QAAQ,GAAG,aAAf;EACA,IAAIC,SAAS,GAAG,oBAAhB;EACA,IAAIC,SAAS,GAAG,oBAAhB;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBhL,GAAhB,EAAqB;EAChCA,EAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;;EAEA,MAAIA,GAAG,GAAG,CAAC,EAAP,IAAaA,GAAG,GAAG,EAAvB,EAA2B;EACzBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CADyB;;EAGzBA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAHyB;;EAKzB,WAAO,YAAYA,GAAnB;EACD;;EAED,SAAO,IAAP;EACD,CAZD;;EAcA,IAAIiL,WAAW,GAAG,SAASA,WAAT,CAAqBtC,EAArB,EAAyB;EACzC;EACA,MAAIhJ,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASqK,QAAT,CAAR;;EAEA,MAAIjL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GANwC;;;EASzCA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASuK,SAAT,CAAJ;;EAEA,MAAInL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAbwC;;;EAgBzCA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASwK,SAAT,CAAJ;;EAEA,MAAIpL,CAAC,KAAK,IAAV,EAAgB;EACd,QAAIK,GAAG,GAAG6J,MAAM,CAAClK,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;EACA,WAAOqL,MAAM,CAAChL,GAAD,CAAb;EACD,GArBwC;;;EAwBzCL,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASsK,QAAT,CAAJ;;EAEA,MAAIlL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD;;EAED,SAAO,IAAP;EACD,CA/BD;;EAiCA,IAAIuL,aAAa,GAAGD,WAApB;EAEA,IAAIE,KAAK,GAAGR,SAAS,EAArB;;EAEA,IAAIS,MAAM,GAAGtH,MAAM,CAAC8F,IAAP,CAAYK,MAAZ,EAAoBoB,MAApB,CAA2B,UAAUC,CAAV,EAAahG,CAAb,EAAgB;EACtD,MAAIiG,IAAI,GAAGjG,CAAC,CAAC4D,KAAF,CAAQ,GAAR,EAAa,CAAb,KAAmB,EAA9B;EACAqC,EAAAA,IAAI,GAAGA,IAAI,CAAC9F,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAP;EACA6F,EAAAA,CAAC,CAACC,IAAD,CAAD,GAAUjG,CAAV;EACA,SAAOgG,CAAP;EACD,CALY,EAKV,EALU,CAAb;;EAOA,IAAI5F,SAAS,GAAG,SAASA,SAAT,CAAmBiD,EAAnB,EAAuB;EACrCA,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,QAAX,EAAqB,EAArB,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,8BAAX,EAA2C,EAA3C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,+BAAX,EAA4C,IAA5C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,gCAAX,EAA6C,IAA7C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,aAAX,EAA0B,QAA1B,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,WAAX,EAAwB,QAAxB,CAAL;EACA,SAAOkD,EAAP;EACD,CARD;;;EAWA,IAAI6C,QAAQ,GAAG,SAASA,QAAT,CAAkBhH,GAAlB,EAAuBgE,KAAvB,EAA8B;EAC3C,MAAI,CAAChE,GAAL,EAAU;EACR,WAAO2G,KAAP;EACD;;EAED,MAAIxC,EAAE,GAAGnE,GAAG,CAACoB,IAAJ,EAAT;EACA,MAAIsD,KAAK,GAAG1E,GAAG,CAAC0E,KAAJ,CAAU,GAAV,CAAZ,CAN2C;;EAQ3C,MAAIA,KAAK,CAACvE,MAAN,GAAe,CAAf,IAAoB6D,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,KAArD,EAA4D;EAC1DA,IAAAA,EAAE,GAAGO,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAA3B;EACD;;EAEDP,EAAAA,EAAE,GAAGA,EAAE,CAAChD,WAAH,EAAL;;EAEA,MAAI6C,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GAhB0C;;;EAmB3CA,EAAAA,EAAE,GAAGjD,SAAS,CAACiD,EAAD,CAAd;;EAEA,MAAIH,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GAvB0C;;;EA0B3C,MAAIyC,MAAM,CAACK,cAAP,CAAsB9C,EAAtB,MAA8B,IAAlC,EAAwC;EACtC,WAAOyC,MAAM,CAACzC,EAAD,CAAb;EACD,GA5B0C;;;EA+B3C,MAAI,QAAQ+C,IAAR,CAAa/C,EAAb,MAAqB,IAAzB,EAA+B;EAC7B,QAAIgD,EAAE,GAAGT,aAAa,CAACvC,EAAD,CAAtB;;EAEA,QAAIgD,EAAJ,EAAQ;EACN,aAAOA,EAAP;EACD;EACF;;EAED,QAAM,IAAIC,KAAJ,CAAU,6CAA6CpH,GAA7C,GAAmD,sCAA7D,CAAN;EACD,CAxCD;;EA0CA,IAAIqH,IAAI,GAAGL,QAAX;EAEA,IAAIM,CAAC,GAAG;EACNC,EAAAA,WAAW,EAAE;EADP,CAAR;EAGAD,CAAC,CAACE,MAAF,GAAW,IAAX;EACAF,CAAC,CAACG,MAAF,GAAW,KAAX;EACAH,CAAC,CAACI,IAAF,GAAS,KAAT;;EAEAJ,CAAC,CAACK,GAAF,GAAQ,MAAR;;EAEAL,CAAC,CAAChL,IAAF,GAASgL,CAAC,CAACK,GAAX;EACAL,CAAC,CAACtL,KAAF,GAAU,SAAS,IAAnB;;EAEAsL,CAAC,CAACM,IAAF,GAAS,OAAT;EACAN,CAAC,CAAClI,IAAF,GAAS,QAAT;EACA;;EAEAE,MAAM,CAAC8F,IAAP,CAAYkC,CAAZ,EAAepJ,OAAf,CAAuB,UAAU4C,CAAV,EAAa;EAClCwG,EAAAA,CAAC,CAACxG,CAAC,GAAG,GAAL,CAAD,GAAawG,CAAC,CAACxG,CAAD,CAAd;EACD,CAFD;EAGA,IAAI+G,YAAY,GAAGP,CAAnB;;EAEA,IAAIQ,IAAI,GAAG,SAASA,IAAT,CAAcpG,CAAd,EAAiBzC,CAAjB,EAAoBd,EAApB,EAAwB4J,IAAxB,EAA8BC,QAA9B,EAAwC;EACjD,MAAInE,OAAO,GAAGnC,CAAC,CAACrE,CAAF,CAAIc,EAAJ,GAAd;;EAEA,MAAI0F,OAAO,KAAK5E,CAAhB,EAAmB;EACjB,WADiB;EAElB;;EAED,MAAIgJ,SAAS,GAAGD,QAAQ,KAAK,IAAb,GAAoB,IAApB,GAA2BtG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAA3C;EACA,MAAIE,QAAQ,GAAGxG,CAAC,CAACF,KAAjB,CARiD;;EAUjD,MAAI2G,IAAI,GAAGlJ,CAAC,GAAG4E,OAAf;EACAnC,EAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACE,IAAD,CAAZ,GAAqBI,IAAhC,CAXiD;EAYjD;;EAEA,MAAIJ,IAAI,KAAK,KAAb,EAAoB;EAClB;EACA;EACA,QAAI9F,IAAI,CAACC,GAAL,CAASiG,IAAT,IAAiB,EAAjB,IAAuBlJ,CAAC,GAAG,EAA/B,EAAmC;EACjCyC,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACH,IAAxB;EACD;EACF,GApBgD;;;EAuBjD,MAAIM,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAAvC,EAAwD;EACtD;EACAtG,IAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV,CAFsD;EAGvD,GA1BgD;EA2BjD;;;EAGA,MAAIE,QAAQ,GAAGP,YAAY,CAACE,IAAD,CAAZ,GAAqB,CAApC;;EAEA,SAAOrG,CAAC,CAACrE,CAAF,CAAIc,EAAJ,MAAYc,CAAnB,EAAsB;EACpByC,IAAAA,CAAC,CAACF,KAAF,IAAW4G,QAAX;EACD;;EAED,SAAO1G,CAAC,CAACrE,CAAF,CAAIc,EAAJ,MAAYc,CAAnB,EAAsB;EACpByC,IAAAA,CAAC,CAACF,KAAF,IAAW4G,QAAX;EACD,GAtCgD;;;EAyCjD,MAAIJ,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAAvC,EAAwD;EACtD;EACAtG,IAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV;EACD;EACF,CA7CD;;;EAgDA,IAAIG,KAAK,GAAG;EACVjJ,EAAAA,IAAI,EAAE;EACJkJ,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAC,IAAL,IAAaA,CAAC,GAAG,IAAxB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,aAAP,EAAsB,MAAtB,EAA8B,IAA9B,CAAX;EACD;EANG,GADI;EASVjD,EAAAA,KAAK,EAAE;EACLsM,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAI,EAAtB;EACD,KAHI;EAILsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,UAAI5B,CAAC,GAAGqE,CAAC,CAACrE,CAAV;EACA,UAAIwG,OAAO,GAAGxG,CAAC,CAAC6F,QAAF,EAAd;EACA,UAAIgF,QAAQ,GAAGxG,CAAC,CAACF,KAAjB;EACA,UAAIyG,SAAS,GAAG5K,CAAC,CAACmL,WAAF,EAAhB;;EAEA,UAAI3E,OAAO,KAAK5E,CAAhB,EAAmB;EACjB;EACD,OAR2B;;;EAW5B,UAAIkJ,IAAI,GAAGlJ,CAAC,GAAG4E,OAAf;EACAnC,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAb,IAAoBQ,IAAI,GAAG,EAA3B,CAAX,CAZ4B;EAa5B;;EAEA,UAAIF,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAImL,WAAJ,EAAlB,EAAqC;EACnC9G,QAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV;EACD,OAjB2B;;;EAoB5B,aAAOxG,CAAC,CAACrE,CAAF,CAAI6F,QAAJ,KAAiBjE,CAAxB,EAA2B;EACzByC,QAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAxB;EACD;;EAED,aAAOjG,CAAC,CAACrE,CAAF,CAAI6F,QAAJ,KAAiBjE,CAAxB,EAA2B;EACzByC,QAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAxB;EACD;EACF;EA/BI,GATG;EA0CVrL,EAAAA,IAAI,EAAE;EACJgM,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,EAArB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,SAAP,EAAkB,KAAlB,EAAyB,UAAzB,CAAX;EACD;EANG,GA1CI;EAkDVyI,EAAAA,IAAI,EAAE;EACJY,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,UAAP,EAAmB,MAAnB,EAA2B,SAA3B,CAAX;EACD;EANG,GAlDI;EA0DVwI,EAAAA,MAAM,EAAE;EACNa,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,YAAP,EAAqB,QAArB,EAA+B,UAA/B,CAAX;EACD;EANK,GA1DE;EAkEVuI,EAAAA,MAAM,EAAE;EACNc,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B;EACAyC,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAAC+G,OAAF,CAAUxJ,CAAV,EAAauC,KAAvB;EACD;EAPK,GAlEE;EA2EV+F,EAAAA,WAAW,EAAE;EACXe,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,IAArB;EACD,KAHU;EAIXsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B;EACAyC,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACmG,YAAF,CAAe5I,CAAf,EAAkBuC,KAA5B;EACD;EAPU;EA3EH,CAAZ;;EAsFA,IAAI+G,MAAM,GAAG,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBgH,KAAnB,EAA0B;EACrC,MAAItD,IAAI,GAAG9F,MAAM,CAAC8F,IAAP,CAAYiD,KAAZ,CAAX;EACA,MAAIM,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;;EAEA,OAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwE,IAAI,CAACjF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpC,QAAIE,CAAC,GAAGsE,IAAI,CAACxE,CAAD,CAAZ;EACA,QAAI3B,CAAC,GAAGyJ,KAAK,CAAC5H,CAAD,CAAb;;EAEA,QAAI7B,CAAC,KAAKmB,SAAV,EAAqB;EACnBnB,MAAAA,CAAC,GAAG0J,GAAG,CAAC7H,CAAD,CAAH,EAAJ;EACD;;EAED,QAAI,OAAO7B,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAGxD,QAAQ,CAACwD,CAAD,EAAI,EAAJ,CAAZ;EACD,KAVmC;;;EAapC,QAAI,CAACoJ,KAAK,CAACvH,CAAD,CAAL,CAASwH,KAAT,CAAerJ,CAAf,CAAL,EAAwB;EACtByC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;;EAEA,UAAIE,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,QAAAA,OAAO,CAACC,IAAR,CAAa,aAAavD,CAAb,GAAiB,IAAjB,GAAwB7B,CAArC;EACD;;EAED;EACD;;EAEDoJ,IAAAA,KAAK,CAACvH,CAAD,CAAL,CAASyH,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB;EACD;;EAED;EACD,CA/BD;;EAiCA,IAAI4J,MAAM,GAAGN,MAAb;EAEA,IAAIO,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,MAAzD,EAAiE,KAAjE,EAAwE,KAAxE,EAA+E,KAA/E,CAAlB;EACA,IAAIC,UAAU,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,OAAxB,EAAiC,OAAjC,EAA0C,KAA1C,EAAiD,MAAjD,EAAyD,MAAzD,EAAiE,QAAjE,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,UAAnG,EAA+G,UAA/G,CAAjB;;EAEA,SAASC,YAAT,GAAwB;EACtB,MAAI9E,GAAG,GAAG;EACR+E,IAAAA,GAAG,EAAE,CADG;;EAAA,GAAV;;EAKA,OAAK,IAAIrI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkI,WAAW,CAAC3I,MAAhC,EAAwCS,CAAC,EAAzC,EAA6C;EAC3CsD,IAAAA,GAAG,CAAC4E,WAAW,CAAClI,CAAD,CAAZ,CAAH,GAAsBA,CAAtB;EACD;;EAED,OAAK,IAAIsI,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGH,UAAU,CAAC5I,MAAjC,EAAyC+I,EAAE,EAA3C,EAA+C;EAC7ChF,IAAAA,GAAG,CAAC6E,UAAU,CAACG,EAAD,CAAX,CAAH,GAAsBA,EAAtB;EACD;;EAED,SAAOhF,GAAP;EACD;;EAED,IAAIiF,MAAM,GAAG;EACX,WAAS,SAASC,MAAT,GAAiB;EACxB,WAAON,WAAP;EACD,GAHU;EAIX,UAAQ,SAASO,KAAT,GAAgB;EACtB,WAAON,UAAP;EACD,GANU;EAOXO,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,WAAON,YAAY,EAAnB;EACD,GATU;EAUXpH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa2H,IAAb,EAAmB;EACtBT,IAAAA,WAAW,GAAGS,IAAI,CAAC,OAAD,CAAJ,IAAiBT,WAA/B;EACAC,IAAAA,UAAU,GAAGQ,IAAI,CAAC,MAAD,CAAJ,IAAgBR,UAA7B;EACD;EAbU,CAAb;;EAiBA,IAAIS,aAAa,GAAG,SAAS/C,WAAT,CAAqB/E,CAArB,EAAwBI,MAAxB,EAAgC;EAClD,MAAI,CAACA,MAAL,EAAa;EACX,WAAOJ,CAAP;EACD,GAHiD;;;EAMlD,MAAII,MAAM,KAAK,GAAf,EAAoB;EAClBA,IAAAA,MAAM,GAAG,OAAT;EACD,GARiD;EASlD;;;EAGA,MAAItG,GAAG,GAAG,CAAV,CAZkD;;EAclD,MAAI,4BAA4B0L,IAA5B,CAAiCpF,MAAjC,CAAJ,EAA8C;EAC5C;EACA,QAAI,MAAMoF,IAAN,CAAWpF,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD,KAJ2C;;;EAO5C,QAAI,MAAMiG,IAAN,CAAWpF,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;EACF,GAxBiD;;;EA2BlD,MAAI,mBAAmBiG,IAAnB,CAAwBpF,MAAxB,CAAJ,EAAqC;EACnCA,IAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;;EAEDzF,EAAAA,GAAG,GAAGiO,UAAU,CAAC3H,MAAD,CAAhB,CA/BkD;;EAiClD,MAAIG,IAAI,CAACC,GAAL,CAAS1G,GAAT,IAAgB,GAApB,EAAyB;EACvBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,GAAZ;EACD,GAnCiD;EAoClD;EACA;;;EAGAA,EAAAA,GAAG,IAAI,CAAC,CAAR;;EAEA,MAAIA,GAAG,IAAI,CAAX,EAAc;EACZA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAI2I,EAAE,GAAG,YAAY3I,GAArB;EACA,MAAIwI,KAAK,GAAGtC,CAAC,CAACuC,SAAd;;EAEA,MAAID,KAAK,CAACG,EAAD,CAAT,EAAe;EACb;EACA;EACAzC,IAAAA,CAAC,CAACyC,EAAF,GAAOA,EAAP;EACD;;EAED,SAAOzC,CAAP;EACD,CAxDD;;EA0DA,IAAIgI,eAAe,GAAGF,aAAtB;;EAEA,IAAIG,SAAS,GAAG,SAASA,SAAT,CAAmBjI,CAAnB,EAAsB;EACpC,MAAI1B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACAF,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,EAApB,EAAwBE,WAAxB,EAAN,CAFoC;EAGpC;;EAEA,MAAIyI,GAAG,GAAG5J,GAAG,CAACjE,KAAJ,CAAU,6DAAV,CAAV;;EAEA,MAAI6N,GAAG,KAAK,IAAZ,EAAkB;EAChB;EACA,QAAI9C,CAAC,GAAGzB,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAd;;EAEA,QAAI9C,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,EAAjB,EAAqB;EACnB,aAAOpF,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAED,QAAI1O,CAAC,GAAGkK,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAd,CARgB;;EAUhB,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOzJ,MAAP,GAAgB,CAAhB,IAAqBhF,CAAC,GAAG,CAAzB,IAA8BA,CAAC,GAAG,EAAtC,EAA0C;EACxC,aAAOuG,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAEDnI,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOZ,CAAP,CAAJ;EACApF,IAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAAStM,CAAT,CAAJ;EACAuG,IAAAA,CAAC,GAAGA,CAAC,CAAC+G,OAAF,CAAUmB,GAAG,CAAC,CAAD,CAAH,IAAU,CAApB,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAcqC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAxB,CAAJ,CAjBgB;;EAmBhB,QAAIE,IAAI,GAAG9J,GAAG,CAACjE,KAAJ,CAAU,kBAAV,CAAX;;EAEA,QAAI+N,IAAI,KAAK,IAAT,IAAiBA,IAAI,CAAC,CAAD,CAAzB,EAA8B;EAC5BpI,MAAAA,CAAC,GAAGA,CAAC,CAACoI,IAAF,CAAOA,IAAI,CAAC,CAAD,CAAX,CAAJ;EACD;;EAED,WAAOpI,CAAP;EACD,GAjCmC;;;EAoCpCkI,EAAAA,GAAG,GAAG5J,GAAG,CAACjE,KAAJ,CAAU,mBAAV,CAAN;;EAEA,MAAI6N,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAAC,CAAD,CAAvB,EAA4B;EAC1B,QAAIG,EAAE,GAAG1E,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAf,CAD0B;;;EAI1B,QAAIG,EAAE,GAAG,EAAL,IAAWA,EAAE,GAAG,CAApB,EAAuB;EACrB,aAAOrI,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAEDnI,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOkC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAjB,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAACoI,IAAF,CAAOF,GAAG,CAAC,CAAD,CAAV,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAlDmC;;;EAqDpCA,EAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,SAAOnI,CAAP;EACD,CAvDD;;EAyDA,IAAIsI,WAAW,GAAGL,SAAlB;EAEA,IAAIM,YAAY,GAAG,CAAC,EAAD;EACnB,EADmB;EAEnB,EAFmB;EAGnB,EAHmB;EAInB,EAJmB;EAKnB,EALmB;EAMnB,EANmB;EAOnB,EAPmB;EAQnB,EARmB;EASnB,EATmB;EAUnB,EAVmB;EAWnB,EAXmB;EAAA,CAAnB;EAaA,IAAIC,cAAc,GAAGD,YAArB;;EAEA,IAAI9K,UAAU,GAAGD,GAAG,CAACC,UAArB;;EAEA,IAAIgL,OAAO,GAAG,SAASA,OAAT,CAAiBjG,GAAjB,EAAsB;EAClC;EACA,MAAIgG,cAAc,CAACjD,cAAf,CAA8B/C,GAAG,CAAClI,KAAlC,MAA6C,IAAjD,EAAuD;EACrD,WAAO,KAAP;EACD,GAJiC;;;EAOlC,MAAIkI,GAAG,CAAClI,KAAJ,KAAc,CAAlB,EAAqB;EACnB,QAAImD,UAAU,CAAC+E,GAAG,CAAC9E,IAAL,CAAV,IAAwB8E,GAAG,CAAC5H,IAAJ,IAAY,EAAxC,EAA4C;EAC1C,aAAO,IAAP;EACD,KAFD,MAEO;EACL,aAAO4H,GAAG,CAAC5H,IAAJ,IAAY,EAAnB;EACD;EACF,GAbiC;;;EAgBlC,MAAI8N,GAAG,GAAGF,cAAc,CAAChG,GAAG,CAAClI,KAAL,CAAd,IAA6B,CAAvC;;EAEA,MAAIkI,GAAG,CAAC5H,IAAJ,IAAY8N,GAAhB,EAAqB;EACnB,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAvBD;;EAyBA,IAAIC,SAAS,GAAGF,OAAhB;EAEA,IAAIG,QAAQ,GAAGnB,MAAM,CAACG,OAAP,EAAf;;EAEA,IAAIiB,SAAS,GAAG,SAASA,SAAT,GAAqB;EACnC,MAAIvK,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAIsK,KAAK,GAAGtK,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAlD;EACA,MAAIhB,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB,CAHmC;;EAKnC,MAAI,CAAChC,IAAD,IAASoL,KAAb,EAAoB;EAClBpL,IAAAA,IAAI,GAAGoL,KAAK,CAACpL,IAAb;EACD,GAPkC;;;EAUnCA,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAIqE,IAAJ,GAAW+E,WAAX,EAAf;EACA,SAAOpJ,IAAP;EACD,CAZD;;EAcA,IAAIqL,MAAM,GAAG;EACb;EACEC,EAAAA,GAAG,EAAE,gFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuBgB,OAAvB,EAAgCC,OAAhC,EAAyC;EAC9C,QAAI7O,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAI1F,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEwK,GAAG,CAAC,CAAD,CADD;EAER5N,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEsN,GAAG,CAAC,CAAD;EAHD,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDgI,IAAAA,eAAe,CAAChI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACAf,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CADa;EAsBb;EACEgJ,EAAAA,GAAG,EAAE,sGADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI1F,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEwK,GAAG,CAAC,CAAD,CADD;EAER5N,MAAAA,KAAK,EAAEP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAFtB;EAGRtN,MAAAA,IAAI,EAAEb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT;EAHN,KAAV;;EAMA,QAAI1F,GAAG,CAAClI,KAAJ,IAAa,EAAjB,EAAqB;EACnB;EACAkI,MAAAA,GAAG,CAAC5H,IAAJ,GAAWb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;EACA1F,MAAAA,GAAG,CAAClI,KAAJ,GAAYP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACD;;EAED,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAvBH,CAtBa;EA+Cb;EACEgJ,EAAAA,GAAG,EAAE,wGADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAItN,IAAI,GAAGb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB,CAF4B;;EAI5B,QAAIlI,CAAC,CAACoJ,OAAF,IAAa9O,KAAK,IAAI,EAA1B,EAA8B;EAC5BM,MAAAA,IAAI,GAAGb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAf;EACA5N,MAAAA,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAA/B;EACD;;EAED,QAAIxK,IAAI,GAAGwK,GAAG,CAAC,CAAD,CAAH,IAAU,IAAInG,IAAJ,GAAW+E,WAAX,EAArB;EACA,QAAItE,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEA;EAHE,KAAV;;EAMA,QAAI+N,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EA1BH,CA/Ca;EA2Eb;EACEgJ,EAAAA,GAAG,EAAE,iDADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CA3Ea;EAgGb;EACA;EACEgJ,EAAAA,GAAG,EAAE,uFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CAjGa;EAsHb;EACEgJ,EAAAA,GAAG,EAAE,wBADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEoF,CAAC,CAACqJ,MAAF,CAASzO,IAAT,IAAiB;EAHf,KAAV;;EAMA,QAAI+N,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CAtHa;EA2Ib;EACEgJ,EAAAA,GAAG,EAAE,4GADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;;EAEA,QAAI,CAACnF,KAAL,EAAY;EACV,aAAO,IAAP;EACD;;EAED,QAAIoD,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAlB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAxBH,CA3Ia,EAoKV;EACD;EACAgJ,EAAAA,GAAG,EAAE,sBAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5J,GAAG,GAAG4J,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5B5J,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,KAAtC,CAAN,CAH4B;;EAK5BjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAI7B,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAI/D,CAAC,GAAG,IAAIoG,IAAJ,EAAR;EACA,QAAIS,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEqB,CAAC,CAAC6F,QAAF,EAFC;EAGR5G,MAAAA,IAAI,EAAEe,CAAC,CAAC8F,OAAF;EAHE,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAzBA,CApKU,EA8LV;EACD;EACAgJ,EAAAA,GAAG,EAAE,iCAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5J,GAAG,GAAG4J,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5B5J,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAI7B,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAI/D,CAAC,GAAG,IAAIoG,IAAJ,EAAR;EACA,QAAIS,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEqB,CAAC,CAAC6F,QAAF,EAFC;EAGR5G,MAAAA,IAAI,EAAEe,CAAC,CAAC8F,OAAF;EAHE,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAvBA,CA9LU,EAsNV;EACD;EACAgJ,EAAAA,GAAG,EAAE,0BAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAIY,KAAK,GAAG9I,CAAC,CAACqJ,MAAd;EACA,QAAI3L,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASY,KAAT,CAApB;EACA,QAAInN,CAAC,GAAG,IAAIoG,IAAJ,EAAR,CAH4B;;EAK5B,QAAI+G,KAAK,CAACxO,KAAN,IAAe,CAACwO,KAAK,CAAClO,IAA1B,EAAgC;EAC9BkO,MAAAA,KAAK,CAAClO,IAAN,GAAa,CAAb;EACD;;EAED,QAAI4H,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEwO,KAAK,CAACxO,KAAN,IAAeqB,CAAC,CAAC6F,QAAF,EAFd;EAGR5G,MAAAA,IAAI,EAAEkO,KAAK,CAAClO,IAAN,IAAce,CAAC,CAAC8F,OAAF;EAHZ,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EA1BA,CAtNU,CAAb;EAkPA,IAAIsJ,QAAQ,GAAGP,MAAf;;EAGA,IAAIQ,MAAM,GAAG,SAASA,MAAT,CAAgBvJ,CAAhB,EAAmB;EAC9BA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAACyH,GAAL,EAAV;EACA5L,EAAAA,MAAM,CAAC8F,IAAP,CAAY1D,CAAC,CAACqJ,MAAF,IAAY,EAAxB,EAA4B7M,OAA5B,CAAoC,UAAU4C,CAAV,EAAa;EAC/C,QAAI,OAAOY,CAAC,CAACZ,CAAD,CAAR,KAAgB,UAApB,EAAgC;EAC9BY,MAAAA,CAAC,GAAGA,CAAC,CAACZ,CAAD,CAAD,CAAKY,CAAC,CAACqJ,MAAF,CAASjK,CAAT,CAAL,CAAJ;EACD;EACF,GAJD;EAKA,SAAOY,CAAP;EACD,CARD;;EAUA,IAAIyJ,KAAK,GAAG;EACVD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaxJ,CAAb,EAAgB;EACnB,WAAOuJ,MAAM,CAACvJ,CAAD,CAAb;EACD,GAHS;EAIV8I,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe9I,CAAf,EAAkB;EACvB,WAAOuJ,MAAM,CAACvJ,CAAD,CAAb;EACD,GANS;EAOV0J,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1J,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAO,EAAP,CAAJ,CAF2B;;EAI3B,WAAOhG,CAAP;EACD,GAZS;EAaV2J,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB3J,CAAlB,EAAqB;EAC7BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,KAAT,CAAJ;EACA5J,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAlBS;EAmBV6J,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7J,CAAnB,EAAsB;EAC/BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,KAAd,CAAJ;EACA9J,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAxBS;EAyBV+J,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB/J,CAAnB,EAAsB;EAC/B,QAAItC,IAAI,GAAG6L,MAAM,CAACvJ,CAAD,CAAN,CAAUtC,IAAV,EAAX;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAACxC,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAF+B;;EAI/B,WAAOsC,CAAP;EACD,GA9BS;EA+BV,eAAa,SAASgK,QAAT,CAAkBhK,CAAlB,EAAqB;EAChC,QAAItC,IAAI,GAAG6L,MAAM,CAACvJ,CAAD,CAAN,CAAUtC,IAAV,EAAX;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAACxC,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAFgC;;EAIhC,WAAOsC,CAAP;EACD;EApCS,CAAZ;EAsCAyJ,KAAK,CAAC,eAAD,CAAL,GAAyBA,KAAK,CAAC,WAAD,CAA9B;EACA,IAAIQ,UAAU,GAAGR,KAAjB;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIS,YAAY,GAAG,UAAnB;EACA,IAAIC,QAAQ,GAAG;EACbzM,EAAAA,IAAI,EAAE,IAAIqE,IAAJ,GAAW+E,WAAX,EADO;EAEbxM,EAAAA,KAAK,EAAE,CAFM;EAGbM,EAAAA,IAAI,EAAE;EAHO,CAAf;;EAMA,IAAIwP,WAAW,GAAG,SAASA,WAAT,CAAqBpK,CAArB,EAAwBkI,GAAxB,EAA6BY,KAA7B,EAAoC;EACpD,MAAIuB,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;EAEA,OAAK,IAAInL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmL,KAAK,CAAC5L,MAA1B,EAAkCS,CAAC,EAAnC,EAAuC;EACrC,QAAIpF,GAAG,GAAGoO,GAAG,CAAChJ,CAAD,CAAH,IAAU4J,KAAK,CAACuB,KAAK,CAACnL,CAAD,CAAN,CAAf,IAA6BiL,QAAQ,CAACE,KAAK,CAACnL,CAAD,CAAN,CAArC,IAAmD,CAA7D;EACAc,IAAAA,CAAC,GAAGA,CAAC,CAACqK,KAAK,CAACnL,CAAD,CAAN,CAAD,CAAYpF,GAAZ,CAAJ;EACD;;EAED,SAAOkG,CAAP;EACD,CATD;;;EAYA,IAAIsK,YAAY,GAAG,SAASA,YAAT,CAAsBtK,CAAtB,EAAyBwC,GAAzB,EAA8BsG,KAA9B,EAAqC;EACtDtG,EAAAA,GAAG,GAAG5E,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkBJ,QAAlB,EAA4BrB,KAA5B,EAAmCtG,GAAnC,CAAN;EACA,MAAIkB,IAAI,GAAG9F,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,CAAX;;EAEA,OAAK,IAAItD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwE,IAAI,CAACjF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpC,QAAImH,IAAI,GAAG3C,IAAI,CAACxE,CAAD,CAAf,CADoC;;EAGpC,QAAIc,CAAC,CAACqG,IAAD,CAAD,KAAY3H,SAAZ,IAAyB,OAAOsB,CAAC,CAACqG,IAAD,CAAR,KAAmB,UAAhD,EAA4D;EAC1D;EACD,KALmC;;;EAQpC,QAAI7D,GAAG,CAAC6D,IAAD,CAAH,KAAc,IAAd,IAAsB7D,GAAG,CAAC6D,IAAD,CAAH,KAAc3H,SAApC,IAAiD8D,GAAG,CAAC6D,IAAD,CAAH,KAAc,EAAnE,EAAuE;EACrE;EACD;;EAED,QAAIvM,GAAG,GAAG0I,GAAG,CAAC6D,IAAD,CAAH,IAAayC,KAAK,CAACzC,IAAD,CAAlB,IAA4B8D,QAAQ,CAAC9D,IAAD,CAApC,IAA8C,CAAxD;EACArG,IAAAA,CAAC,GAAGA,CAAC,CAACqG,IAAD,CAAD,CAAQvM,GAAR,CAAJ;EACD;;EAED,SAAOkG,CAAP;EACD,CArBD;;;EAwBA,IAAIwK,UAAU,GAAG,SAASA,UAAT,CAAoBxK,CAApB,EAAuB7B,KAAvB,EAA8B+K,OAA9B,EAAuC;EACtD,MAAIJ,KAAK,GAAG9I,CAAC,CAACqJ,MAAF,IAAYc,QAAxB,CADsD;;EAGtD,MAAI,OAAOhM,KAAP,KAAiB,QAArB,EAA+B;EAC7B,QAAIA,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG+L,YAArB,IAAqClK,CAAC,CAACkH,MAAF,KAAa,KAAtD,EAA6D;EAC3DxE,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb;EACAD,MAAAA,OAAO,CAACC,IAAR,CAAa,uDAAb;EACD;;EAED3C,IAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAV;EACA,WAAO6B,CAAP;EACD,GAXqD;;;EActDA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAACyH,GAAL,EAAV,CAdsD;;EAgBtD,MAAIxJ,CAAC,CAACqJ,MAAF,IAAY7L,GAAG,CAACY,QAAJ,CAAa4B,CAAC,CAACqJ,MAAf,CAAZ,IAAsCzL,MAAM,CAAC8F,IAAP,CAAY1D,CAAC,CAACqJ,MAAd,EAAsB5K,MAAtB,GAA+B,CAAzE,EAA4E;EAC1E,QAAIgM,GAAG,GAAGH,YAAY,CAACtK,CAAD,EAAI8I,KAAJ,EAAWqB,QAAX,CAAtB;;EAEA,QAAIM,GAAG,CAACC,OAAJ,EAAJ,EAAmB;EACjB1K,MAAAA,CAAC,CAACF,KAAF,GAAU2K,GAAG,CAAC3K,KAAd;EACD;EACF,GAtBqD;;;EAyBtD,MAAI3B,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKO,SAA5B,IAAyCP,KAAK,KAAK,EAAvD,EAA2D;EACzD,WAAO6B,CAAP,CADyD;EAE1D,GA3BqD;;;EA8BtD,MAAIxC,GAAG,CAACG,MAAJ,CAAWQ,KAAX,MAAsB,IAA1B,EAAgC;EAC9B6B,IAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAK,CAAC0B,OAAN,EAAV;EACA,WAAOG,CAAP;EACD,GAjCqD;;;EAoCtD,MAAIxC,GAAG,CAACU,OAAJ,CAAYC,KAAZ,MAAuB,IAA3B,EAAiC;EAC/B6B,IAAAA,CAAC,GAAGoK,WAAW,CAACpK,CAAD,EAAI7B,KAAJ,EAAW2K,KAAX,CAAf;EACA,WAAO9I,CAAP;EACD,GAvCqD;;;EA0CtD,MAAIxC,GAAG,CAACY,QAAJ,CAAaD,KAAb,MAAwB,IAA5B,EAAkC;EAChC;EACA,QAAIA,KAAK,CAAC2B,KAAV,EAAiB;EACfE,MAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAK,CAAC2B,KAAhB;EACAE,MAAAA,CAAC,CAACyC,EAAF,GAAOtE,KAAK,CAACsE,EAAb;EACA,aAAOzC,CAAP;EACD;;EAEDA,IAAAA,CAAC,GAAGsK,YAAY,CAACtK,CAAD,EAAI7B,KAAJ,EAAW2K,KAAX,CAAhB;EACA,WAAO9I,CAAP;EACD,GApDqD;;;EAuDtD,MAAI,OAAO7B,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAO6B,CAAP;EACD,GAzDqD;;;EA4DtD7B,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,8DAAd,EAA8E,EAA9E,CAAR;EACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR;EACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,KAAd,EAAqB,GAArB,EAA0BG,IAA1B,EAAR,CA9DsD;;EAgEtD,MAAIuK,UAAU,CAAC1E,cAAX,CAA0BpH,KAA1B,MAAqC,IAAzC,EAA+C;EAC7C6B,IAAAA,CAAC,GAAGiK,UAAU,CAAC9L,KAAD,CAAV,CAAkB6B,CAAlB,CAAJ;EACA,WAAOA,CAAP;EACD,GAnEqD;;;EAsEtD,OAAK,IAAId,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoK,QAAQ,CAAC7K,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;EACxC,QAAIzF,CAAC,GAAG0E,KAAK,CAAC9D,KAAN,CAAYiP,QAAQ,CAACpK,CAAD,CAAR,CAAY8J,GAAxB,CAAR;;EAEA,QAAIvP,CAAJ,EAAO;EACL,UAAIkR,IAAI,GAAGrB,QAAQ,CAACpK,CAAD,CAAR,CAAY+J,KAAZ,CAAkBjJ,CAAlB,EAAqBvG,CAArB,EAAwByP,OAAxB,CAAX;;EAEA,UAAIyB,IAAI,KAAK,IAAb,EAAmB;EACjB,eAAOA,IAAP;EACD;EACF;EACF;;EAED,MAAI3K,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,IAAAA,OAAO,CAACC,IAAR,CAAa,2CAA2CxE,KAA3C,GAAmD,GAAhE;EACD;;EAED6B,EAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,SAAOE,CAAP;EACD,CAxFD;;EA0FA,IAAI7B,KAAK,GAAGqM,UAAZ;EAEA,IAAII,SAAS,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,CAAhB;EACA,IAAIC,QAAQ,GAAG,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgC,WAAhC,EAA6C,UAA7C,EAAyD,QAAzD,EAAmE,UAAnE,CAAf;EACA,IAAIC,IAAI,GAAG;EACT,WAAS,SAASpD,OAAT,GAAiB;EACxB,WAAOkD,SAAP;EACD,GAHQ;EAIT,UAAQ,SAASjD,MAAT,GAAgB;EACtB,WAAOkD,QAAP;EACD,GANQ;EAOT3K,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa2H,IAAb,EAAmB;EACtB+C,IAAAA,SAAS,GAAG/C,IAAI,CAAC,OAAD,CAAJ,IAAiB+C,SAA7B;EACAC,IAAAA,QAAQ,GAAGhD,IAAI,CAAC,MAAD,CAAJ,IAAgBgD,QAA3B;EACD;EAVQ,CAAX;EAcA;;EAEA,IAAIE,SAAS,GAAG,SAASA,SAAT,CAAmB/K,CAAnB,EAAsB;EACpC,MAAII,MAAM,GAAGJ,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAlC;EACA,MAAI4K,UAAU,GAAG5K,MAAM,GAAG,CAA1B;EACA,MAAI2F,MAAM,GAAG,IAAb,CAHoC;;EAKpC,MAAIxF,IAAI,CAACC,GAAL,CAASJ,MAAM,GAAG,CAAlB,MAAyB,GAA7B,EAAkC;EAChC2F,IAAAA,MAAM,GAAG,IAAT;;EAEA,QAAI3F,MAAM,IAAI,CAAd,EAAiB;EACfA,MAAAA,MAAM,GAAGG,IAAI,CAAC0K,KAAL,CAAW7K,MAAX,CAAT;EACD,KAFD,MAEO;EACLA,MAAAA,MAAM,GAAGG,IAAI,CAAC2K,IAAL,CAAU9K,MAAV,CAAT;EACD;EACF;;EAED,MAAI4K,UAAJ,EAAgB;EACd;EACA5K,IAAAA,MAAM,IAAI,CAAC,CAAX;EACAA,IAAAA,MAAM,GAAG5C,GAAG,CAACa,OAAJ,CAAY+B,MAAZ,EAAoB,CAApB,CAAT;EACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;EACD,GALD,MAKO;EACLA,IAAAA,MAAM,GAAG5C,GAAG,CAACa,OAAJ,CAAY+B,MAAZ,EAAoB,CAApB,CAAT;EACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;EACD;;EAEDA,EAAAA,MAAM,GAAGA,MAAM,GAAG,GAAT,GAAe2F,MAAxB,CAzBoC;;EA2BpC,MAAI3F,MAAM,KAAK,QAAf,EAAyB;EACvBA,IAAAA,MAAM,GAAG,GAAT;EACD;;EAED,SAAOA,MAAP;EACD,CAhCD;;EAkCA,IAAI+K,OAAO,GAAGJ,SAAd;EAEA,IAAI3G,MAAM,GAAG;EACX6B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnB,WAAOxC,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAACoL,OAAF,EAAd,CAAP;EACD,GAHU;EAIX,eAAa,SAASC,QAAT,CAAkBrL,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACsB,SAAJ,CAAcgM,IAAI,CAAC,OAAD,CAAJ,GAAgB9K,CAAC,CAACiG,GAAF,EAAhB,CAAd,CAAP;EACD,GANU;EAOX,gBAAc,SAASqF,SAAT,CAAmBtL,CAAnB,EAAsB;EAClC,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GATU;EAUX,iBAAe,SAASsF,UAAT,CAAoBvL,CAApB,EAAuB;EACpC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACiG,GAAF,EAAZ,CAAP;EACD,GAZU;EAaX,aAAW,SAASuF,MAAT,CAAgBxL,CAAhB,EAAmB;EAC5B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACiG,GAAF,EAAZ,CAAP;EACD,GAfU;EAgBXrL,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcoF,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACpF,IAAF,EAAP;EACD,GAlBU;EAmBX,kBAAgB,SAAS6Q,WAAT,CAAqBzL,CAArB,EAAwB;EACtC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAAP;EACD,GArBU;EAsBX,cAAY,SAAS8Q,OAAT,CAAiB1L,CAAjB,EAAoB;EAC9B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAP;EACD,GAxBU;EAyBXN,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvB,WAAOxC,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAAC2L,SAAF,EAAd,CAAP;EACD,GA3BU;EA4BX,iBAAe,SAASC,UAAT,CAAoB5L,CAApB,EAAuB;EACpC,WAAOxC,GAAG,CAACsB,SAAJ,CAAc2I,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAd,CAAP;EACD,GA9BU;EA+BX,kBAAgB,SAASuR,WAAT,CAAqB7L,CAArB,EAAwB;EACtC,WAAOA,CAAC,CAAC1F,KAAF,EAAP;EACD,GAjCU;EAkCX,mBAAiB,SAASwR,YAAT,CAAsB9L,CAAtB,EAAyB;EACxC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAAC1F,KAAF,EAAZ,CAAP;EACD,GApCU;EAqCX,eAAa,SAASyR,QAAT,CAAkB/L,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,EAAZ,CAAP;EACD,GAvCU;EAwCX,eAAa,SAAS0R,QAAT,CAAkBhM,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAP;EACD,GA1CU;EA2CX;EACAoD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrB,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAOA,IAAP;EACD;;EAEDA,IAAAA,IAAI,GAAG6C,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GArDU;EAsDX,gBAAc,SAASuO,SAAT,CAAmBjM,CAAnB,EAAsB;EAClC,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAO,IAAIgD,MAAJ,CAAWpB,MAAM,CAACU,CAAC,CAACtC,IAAF,EAAD,CAAN,CAAiBsB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAX,CAAP;EACD;;EAEDtB,IAAAA,IAAI,GAAG6C,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GA/DU;EAgEX,cAAY,SAASwO,OAAT,CAAiBlM,CAAjB,EAAoB;EAC9B,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;EACA,QAAIsN,UAAU,GAAGtN,IAAI,GAAG,CAAxB;EACA,QAAIY,GAAG,GAAGd,GAAG,CAACa,OAAJ,CAAYkC,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAZ,EAA4B,CAA5B,CAAV,CAH8B;;EAK9B,QAAIsN,UAAJ,EAAgB;EACd;EACA1M,MAAAA,GAAG,GAAGd,GAAG,CAACa,OAAJ,CAAYC,GAAZ,EAAiB,CAAjB,CAAN;EACAA,MAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,WAAOA,GAAP;EACD,GA5EU;EA6EXtD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcgF,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAChF,IAAF,EAAP;EACD,GA/EU;EAgFX,aAAW,SAASmR,MAAT,CAAgBnM,CAAhB,EAAmB;EAC5B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACoM,MAAF,EAAV,EAAsB,GAAtB,EAA2B1L,MAA3B,CAAkClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAlC,CAAP;EACD,GAlFU;EAmFXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACqM,MAAF,EAAP;EACD,GArFU;EAsFX,cAAY,SAASC,OAAT,CAAiBtM,CAAjB,EAAoB;EAC9B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACqM,MAAF,EAAZ,CAAP;EACD,GAxFU;EAyFX,aAAW,SAASD,MAAT,CAAgBpM,CAAhB,EAAmB;EAC5B,WAAOA,CAAC,CAACoM,MAAF,EAAP;EACD,GA3FU;EA4FX,iBAAe,SAASG,SAAT,CAAmBvM,CAAnB,EAAsB;EACnC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACoM,MAAF,EAAZ,CAAP;EACD,GA9FU;EA+FXrG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAAC+F,MAAF,EAAP;EACD,GAjGU;EAkGX,gBAAc,SAASyG,SAAT,CAAmBxM,CAAnB,EAAsB;EAClC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAP;EACD,GApGU;EAqGXD,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9F,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAAC8F,MAAF,EAAP;EACD,GAvGU;EAwGX,gBAAc,SAAS2G,SAAT,CAAmBzM,CAAnB,EAAsB;EAClC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC8F,MAAF,EAAZ,CAAP;EACD,GA1GU;EA2GXsC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpI,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoI,IAAF,EAAP;EACD,GA7GU;EA8GXsE,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,WAAO,MAAMA,CAAC,CAAC0M,OAAF,EAAb;EACD,GAhHU;EAiHX/R,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBqF,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAACrF,MAAF,EAAP;EACD,GAnHU;EAoHXgS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3M,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GAtHU;EAuHXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5M,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC4M,IAAF,EAAP;EACD,GAzHU;EA0HXtI,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBtE,CAAlB,EAAqB;EAC7B,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GA5HU;EA6HX1D,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBJ,CAAhB,EAAmB;EACzB,WAAOmL,OAAO,CAACnL,CAAD,CAAd;EACD,GA/HU;EAgIX6M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB7M,CAAjB,EAAoB;EAC3B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACtC,IAAF,EAAV,EAAoB,GAApB,EAAyBgD,MAAzB,CAAgClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAhC,EAA4D,GAA5D,EAAiEoG,MAAjE,CAAwElD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAxE,CAAP;EACD,GAlIU;EAmIX;EACA,gBAAc,SAASkS,SAAT,CAAmB9M,CAAnB,EAAsB;EAClC,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2CoG,MAA3C,CAAkDlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAlD,EAAyE,GAAzE,EAA8E8F,MAA9E,CAAqFV,CAAC,CAACtC,IAAF,EAArF,CAAP;EACD,GAtIU;EAuIX;EACA,gBAAc,SAASqP,SAAT,CAAmB/M,CAAnB,EAAsB;EAClC,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAV,EAAiC,GAAjC,EAAsC8F,MAAtC,CAA6ClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAA7C,EAAyE,GAAzE,EAA8EoG,MAA9E,CAAqFV,CAAC,CAACtC,IAAF,EAArF,CAAP;EACD,GA1IU;EA2IX;EACA,WAAS,SAASsP,IAAT,CAAchN,CAAd,EAAiB;EACxB,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2CoG,MAA3C,CAAkDlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAlD,CAAP;EACD,GA9IU;EA+IX;EACA;EACAqS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajN,CAAb,EAAgB;EACnB,QAAItC,IAAI,GAAGsC,CAAC,CAACoE,MAAF,CAAS,UAAT,CAAX;EACA,QAAI9J,KAAK,GAAGkD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAZ,CAFmB;;EAInB,QAAIM,IAAI,GAAG4C,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAX;EACA,QAAIoL,IAAI,GAAGxI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACkN,GAAF,EAAZ,CAAX;EACA,QAAInH,MAAM,GAAGvI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAb;EACA,QAAID,MAAM,GAAGtI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC8F,MAAF,EAAZ,CAAb;EACA,QAAIqH,EAAE,GAAG3P,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC6F,WAAF,EAAZ,EAA6B,CAA7B,CAAT;;EACA,QAAIzF,MAAM,GAAG+K,OAAO,CAACnL,CAAD,CAApB;;EACA,WAAO,GAAGU,MAAH,CAAUhD,IAAV,EAAgB,GAAhB,EAAqBgD,MAArB,CAA4BpG,KAA5B,EAAmC,GAAnC,EAAwCoG,MAAxC,CAA+C9F,IAA/C,EAAqD,GAArD,EAA0D8F,MAA1D,CAAiEsF,IAAjE,EAAuE,GAAvE,EAA4EtF,MAA5E,CAAmFqF,MAAnF,EAA2F,GAA3F,EAAgGrF,MAAhG,CAAuGoF,MAAvG,EAA+G,GAA/G,EAAoHpF,MAApH,CAA2HyM,EAA3H,EAA+HzM,MAA/H,CAAsIN,MAAtI,CAAP,CAVmB;EAWpB,GA5JU;EA6JX,eAAa,SAASgN,QAAT,CAAkBpN,CAAlB,EAAqB;EAChC,QAAI1F,KAAK,GAAGkD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAZ,CADgC;;EAGhC,QAAIM,IAAI,GAAG4C,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAX;EACA,WAAO,GAAG8F,MAAH,CAAUV,CAAC,CAACtC,IAAF,EAAV,EAAoB,GAApB,EAAyBgD,MAAzB,CAAgCpG,KAAhC,EAAuC,GAAvC,EAA4CoG,MAA5C,CAAmD9F,IAAnD,CAAP,CAJgC;EAKjC,GAlKU;EAmKX,aAAW,SAASyS,MAAT,CAAgBrN,CAAhB,EAAmB;EAC5B,WAAO,IAAI+B,IAAJ,CAAS/B,CAAC,CAACF,KAAX,EAAkBwN,WAAlB,EAAP,CAD4B;EAE7B,GArKU;EAsKX;EACAC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvN,CAAd,EAAiB;EACrB,WAAO,GAAGU,MAAH,CAAU+G,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6CoG,MAA7C,CAAoDlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF8F,MAAjF,CAAwFV,CAAC,CAAChF,IAAF,EAAxF,CAAP;EACD,GAzKU;EA0KX,eAAa,SAASwS,QAAT,CAAkBxN,CAAlB,EAAqB;EAChC,WAAO,GAAGU,MAAH,CAAU+G,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6CoG,MAA7C,CAAoDlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF8F,MAAjF,CAAwFV,CAAC,CAACtC,IAAF,EAAxF,CAAP;EACD,GA5KU;EA6KX,cAAY,SAAS+P,OAAT,CAAiBzN,CAAjB,EAAoB;EAC9B,WAAO,GAAGU,MAAH,CAAUoK,IAAI,CAAC,OAAD,CAAJ,GAAgB9K,CAAC,CAACiG,GAAF,EAAhB,CAAV,EAAoC,GAApC,EAAyCvF,MAAzC,CAAgDlD,GAAG,CAACsB,SAAJ,CAAc2I,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAd,CAAhD,EAA6F,GAA7F,EAAkGoG,MAAlG,CAAyGlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAAzG,CAAP;EACD,GA/KU;EAgLX,eAAa,SAAS8S,QAAT,CAAkB1N,CAAlB,EAAqB;EAChC,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACoL,OAAF,EAAV,EAAuB,GAAvB,EAA4B1K,MAA5B,CAAmClD,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAAC2L,SAAF,EAAd,CAAnC,EAAiE,GAAjE,EAAsEjL,MAAtE,CAA6ElD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAA7E,EAAoG,IAApG,EAA0G8F,MAA1G,CAAiHV,CAAC,CAAChF,IAAF,EAAjH,CAAP;EACD;EAlLU,CAAb;;EAqLA,IAAI2S,OAAO,GAAG;EACZ,cAAY,KADA;EAEZ,gBAAc,OAFF;EAGZ,cAAY,KAHA;EAIZ,cAAY,SAJA;EAKZ,aAAW,MALC;EAMZ,cAAY,MANA;EAOZlL,EAAAA,EAAE,EAAE,UAPQ;EAQZ,aAAW,YARC;EASZ,eAAa,cATD;EAUZ,eAAa,WAVD;EAWZ,cAAY,UAXA;EAYZ,gBAAc,MAZF;EAaZmL,EAAAA,GAAG,EAAE,YAbO;EAcZC,EAAAA,GAAG,EAAE,YAdO;EAeZC,EAAAA,GAAG,EAAE,SAfO;EAgBZ,gBAAc,SAhBF;EAiBZ,gBAAc,YAjBF;EAkBZ,gBAAc,YAlBF;EAmBZ,mBAAiB,YAnBL;EAoBZ,gBAAc,SApBF;EAqBZ,cAAY;EArBA,CAAd;EAuBAlQ,MAAM,CAAC8F,IAAP,CAAYiK,OAAZ,EAAqBnR,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC,SAAOgF,MAAM,CAAChF,CAAD,CAAN,GAAYgF,MAAM,CAACuJ,OAAO,CAACvO,CAAD,CAAR,CAAzB;EACD,CAFD;;EAIA,IAAI2O,WAAW,GAAG,SAASA,WAAT,CAAqB/N,CAArB,EAAwB;EACxC,MAAI1B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E,CADwC;;EAIxC,MAAIwB,CAAC,CAAC0K,OAAF,OAAgB,IAApB,EAA0B;EACxB,WAAO,EAAP;EACD,GANuC;;;EASxC,MAAItG,MAAM,CAACmB,cAAP,CAAsBjH,GAAtB,CAAJ,EAAgC;EAC9B,QAAI0P,GAAG,GAAG5J,MAAM,CAAC9F,GAAD,CAAN,CAAY0B,CAAZ,KAAkB,EAA5B;;EAEA,QAAI1B,GAAG,KAAK,MAAZ,EAAoB;EAClB0P,MAAAA,GAAG,GAAG1O,MAAM,CAAC0O,GAAD,CAAZ;;EAEA,UAAI1P,GAAG,KAAK,MAAZ,EAAoB;EAClB0P,QAAAA,GAAG,GAAGxQ,GAAG,CAACsB,SAAJ,CAAckP,GAAd,CAAN;EACD;EACF;;EAED,WAAOA,GAAP;EACD,GArBuC;;;EAwBxC,MAAI1P,GAAG,CAAC2P,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;EAC3B,QAAI3U,QAAQ,GAAG,YAAf;EACAgF,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAYjG,QAAZ,EAAsB,UAAU4U,CAAV,EAAaC,GAAb,EAAkB;EAC5CA,MAAAA,GAAG,GAAGA,GAAG,CAAC1O,WAAJ,GAAkBC,IAAlB,EAAN;;EAEA,UAAI0E,MAAM,CAACmB,cAAP,CAAsB4I,GAAtB,CAAJ,EAAgC;EAC9B,eAAO7O,MAAM,CAAC8E,MAAM,CAAC+J,GAAD,CAAN,CAAYnO,CAAZ,CAAD,CAAb;EACD;;EAED,aAAO,EAAP;EACD,KARK,CAAN;EASA,WAAO1B,GAAP;EACD;;EAED,SAAO0B,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,CAvCD;;EAyCA,IAAIgK,QAAQ,GAAGL,WAAf;EAEA,IAAIpP,GAAG,GAAGnB,GAAG,CAACa,OAAd;EACA,IAAI8B,cAAc,GAAG3C,GAAG,CAAC2C,cAAzB;EACA;EACA;;EAEA,IAAIyH,OAAO,GAAG;EACZyG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWrO,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GAHW;EAIZ2B,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYtO,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GANW;EAOZ4B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavO,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GATW;EAUZ6B,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxO,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC2M,GAAF,OAAY,IAAZ,GAAmB,aAAnB,GAAmC,eAA1C;EACD,GAZW;EAaZ;EACA8B,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzO,CAAX,EAAc;EACf,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GAhBW;EAiBZgR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY1O,CAAZ,EAAe;EACjB;EACA,WAAOjG,QAAQ,CAACuF,MAAM,CAACU,CAAC,CAACtC,IAAF,EAAD,CAAN,CAAiBsB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAD,EAAgC,EAAhC,CAAf;EACD,GApBW;EAqBZ2P,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3O,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GAvBW;EAwBZkR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5O,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GA1BW;EA2BZmR,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7O,CAAf,EAAkB;EACvB,WAAO,MAAMA,CAAC,CAACtC,IAAF,EAAb;EACD,GA7BW;EA8BZ;EACA;EACAoR,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9O,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GAlCW;EAmCZqC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/O,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GArCW;EAsCZsC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAahP,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GAxCW;EAyCZuC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjP,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GA3CW;EA4CZ;EACAwC,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlP,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC1F,KAAF,KAAY,CAAnB;EACD,GA/CW;EAgDZ6U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYnP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC1F,KAAF,KAAY,CAAb,CAAV;EACD,GAlDW;EAmDZ8U,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapP,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,aAAT,CAAP;EACD,GArDW;EAsDZiL,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrP,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,OAAT,CAAP;EACD,GAxDW;EAyDZ;EACAkL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWtP,CAAX,EAAc;EACf,WAAOA,CAAC,CAACkG,IAAF,EAAP;EACD,GA5DW;EA6DZqJ,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYvP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACkG,IAAF,EAAD,CAAV;EACD,GA/DW;EAgEZ;EACA;EACA;EACAvK,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWqE,CAAX,EAAc;EACf,WAAOA,CAAC,CAACpF,IAAF,EAAP;EACD,GArEW;EAsEZ4U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACpF,IAAF,EAAD,CAAV;EACD,GAxEW;EAyEZ;EACA6U,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzP,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC0P,SAAF,EAAP;EACD,GA5EW;EA6EZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY3P,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC0P,SAAF,EAAD,CAAV;EACD,GA/EW;EAgFZE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5P,CAAb,EAAgB;EACnB,WAAOrB,GAAG,CAACqB,CAAC,CAAC0P,SAAF,EAAD,EAAgB,CAAhB,CAAV;EACD,GAlFW;EAmFZ;EACA;EACA;EACAG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW7P,CAAX,EAAc;EACf,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GAxFW;EAyFZ0L,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY9P,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA3FW;EA4FZ2L,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa/P,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA9FW;EA+FZ4L,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchQ,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,CAAP;EACD,GAjGW;EAkGZ6L,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejQ,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GApGW;EAqGZ8L,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlQ,CAAX,EAAc;EACf,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GAvGW;EAwGZkK,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYnQ,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GA1GW;EA2GZmK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapQ,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA7GW;EA8GZiM,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrQ,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,CAAP;EACD,GAhHW;EAiHZkM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetQ,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GAnHW;EAoHZ;EACAmM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvQ,CAAX,EAAc;EACf,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GAvHW;EAwHZyR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxQ,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GA1HW;EA2HZ0R,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazQ,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GA7HW;EA8HZ2R,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1Q,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GAhIW;EAiIZ;EACAqG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWpF,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2Q,GAAF,EAAP;EACD,GApIW;EAqIZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY5Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC2Q,GAAF,EAAD,CAAV;EACD,GAvIW;EAwIZE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW7Q,CAAX,EAAc;EACf,WAAOA,CAAC,CAACgG,IAAF,EAAP;EACD,GA1IW;EA2IZ8K,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY9Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACgG,IAAF,EAAD,CAAV;EACD,GA7IW;EA8IZ;EACAvM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWuG,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC+F,MAAF,EAAP;EACD,GAjJW;EAkJZgL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC+F,MAAF,EAAD,CAAV;EACD,GApJW;EAqJZ/F,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWgR,EAAX,EAAe;EAChB,WAAOA,EAAE,CAAClL,MAAH,EAAP;EACD,GAvJW;EAwJZmL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYjR,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC8F,MAAF,EAAD,CAAV;EACD,GA1JW;EA2JZ;EACAoL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlR,CAAX,EAAc;EACf,WAAOA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACmI,OAAF,CAAU,KAAV,EAAiBrI,KAAlC;EACD,GA9JW;EA+JZ;EACAqR,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWnR,CAAX,EAAc;EACf,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GAlKW;EAmKZsN,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYpR,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GArKW;EAsKZuN,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarR,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GAxKW;EAyKZwN,EAAAA,IAAI,EAAE,SAASA,IAAT,CAActR,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GA3KW;EA4KZyN,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvR,CAAX,EAAc;EACf,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GA9KW;EA+KZoR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxR,CAAZ,EAAe;EACjB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GAjLW;EAkLZqR,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazR,CAAb,EAAgB;EACnB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GApLW;EAqLZsR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1R,CAAd,EAAiB;EACrB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,EAA8B,GAA9B,CAArB;EACD;EAvLW,CAAd;;EA0LA,IAAIuR,QAAQ,GAAG,SAASA,QAAT,CAAkBC,KAAlB,EAAyBC,EAAzB,EAA6BtU,CAA7B,EAAgC;EAC7C,MAAIuG,IAAI,GAAG8N,KAAX;EACA,MAAIE,MAAM,GAAGD,EAAb;;EAEA,OAAK,IAAI3S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,CAApB,EAAuB2B,CAAC,IAAI,CAA5B,EAA+B;EAC7B0I,IAAAA,OAAO,CAAC9D,IAAD,CAAP,GAAgB8D,OAAO,CAACkK,MAAD,CAAvB;EACAhO,IAAAA,IAAI,IAAI8N,KAAR;EACAE,IAAAA,MAAM,IAAID,EAAV;EACD;EACF,CATD;;EAWAF,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;;EAEA,IAAII,OAAO,GAAG,SAASA,OAAT,CAAiB/R,CAAjB,EAAoB1B,GAApB,EAAyB;EACrC,MAAI0T,KAAK,GAAG1T,GAAG,CAAC0E,KAAJ,CAAU,EAAV,CAAZ,CADqC;;EAGrC,MAAIkF,GAAG,GAAG,CAAC8J,KAAK,CAAC,CAAD,CAAN,CAAV;EACA,MAAIC,OAAO,GAAG,KAAd;;EAEA,OAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8S,KAAK,CAACvT,MAA1B,EAAkCS,CAAC,IAAI,CAAvC,EAA0C;EACxC;EACA,QAAI8S,KAAK,CAAC9S,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpB+S,MAAAA,OAAO,GAAG,CAACA,OAAX,CADoB;;EAGpB,UAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAAC9S,CAAC,GAAG,CAAL,CAAzB,IAAoC8S,KAAK,CAAC9S,CAAC,GAAG,CAAL,CAAL,KAAiB,GAAzD,EAA8D;EAC5D+S,QAAAA,OAAO,GAAG,IAAV;EACD,OAFD,MAEO;EACL;EACD;EACF,KAVuC;;;EAaxC,QAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAAC9S,CAAD,CAAL,KAAagJ,GAAG,CAACA,GAAG,CAACzJ,MAAJ,GAAa,CAAd,CAAH,CAAoB,CAApB,CAArC,EAA6D;EAC3DyJ,MAAAA,GAAG,CAACA,GAAG,CAACzJ,MAAJ,GAAa,CAAd,CAAH,IAAuBuT,KAAK,CAAC9S,CAAD,CAA5B;EACD,KAFD,MAEO;EACLgJ,MAAAA,GAAG,CAACgK,IAAJ,CAASF,KAAK,CAAC9S,CAAD,CAAd;EACD;EACF;;EAED,SAAOgJ,GAAG,CAAC/C,MAAJ,CAAW,UAAUgN,GAAV,EAAeC,CAAf,EAAkB;EAClC,QAAIxK,OAAO,CAACwK,CAAD,CAAP,KAAe1T,SAAnB,EAA8B;EAC5ByT,MAAAA,GAAG,IAAIvK,OAAO,CAACwK,CAAD,CAAP,CAAWpS,CAAX,KAAiB,EAAxB;EACD,KAFD,MAEO;EACLmS,MAAAA,GAAG,IAAIC,CAAP;EACD;;EAED,WAAOD,GAAP;EACD,GARM,EAQJ,EARI,CAAP;EASD,CAnCD;;EAqCA,IAAIE,SAAS,GAAGN,OAAhB;EAEA,IAAIO,OAAO,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,aAAtD,EAAqE,MAArE,EAA6E,QAA7E,CAAd;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBvS,CAAhB,EAAmBZ,CAAnB,EAAsB;EACjC,MAAIwC,KAAK,GAAG5B,CAAC,CAACC,KAAF,GAAUkI,OAAV,CAAkB/I,CAAlB,CAAZ;EACA,MAAIyC,GAAG,GAAG7B,CAAC,CAACC,KAAF,GAAUuS,KAAV,CAAgBpT,CAAhB,CAAV;EACA,MAAI3E,QAAQ,GAAGoH,GAAG,CAAC/B,KAAJ,GAAY8B,KAAK,CAAC9B,KAAjC;EACA,MAAI2S,OAAO,GAAG,CAACzS,CAAC,CAACF,KAAF,GAAU8B,KAAK,CAAC9B,KAAjB,IAA0BrF,QAAxC;EACA,SAAOsN,UAAU,CAAC0K,OAAO,CAACC,OAAR,CAAgB,CAAhB,CAAD,CAAjB;EACD,CAND;;;EASA,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkB3S,CAAlB,EAAqBqG,IAArB,EAA2B;EACxC,MAAIA,IAAJ,EAAU;EACRA,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;EACA,WAAOkM,MAAM,CAACvS,CAAD,EAAIqG,IAAJ,CAAb;EACD;;EAED,MAAI7D,GAAG,GAAG,EAAV;EACA8P,EAAAA,OAAO,CAAC9V,OAAR,CAAgB,UAAU4C,CAAV,EAAa;EAC3BoD,IAAAA,GAAG,CAACpD,CAAD,CAAH,GAASmT,MAAM,CAACvS,CAAD,EAAIZ,CAAJ,CAAf;EACD,GAFD;EAGA,SAAOoD,GAAP;EACD,CAXD;;EAaA,IAAIoQ,UAAU,GAAGD,QAAjB;;EAEA,IAAIE,OAAO,GAAG,SAASA,OAAT,CAAiB7S,CAAjB,EAAoBqG,IAApB,EAA0B;EACtC;EACA,MAAIyM,IAAI,GAAG9S,CAAC,CAAC2S,QAAF,EAAX;EACAtM,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CAHsC;;EAKtC,MAAIA,IAAI,KAAK,aAAb,EAA4B;EAC1BA,IAAAA,IAAI,GAAG,aAAP;EACD;;EAED,MAAIyM,IAAI,CAACzM,IAAD,CAAJ,KAAe3H,SAAnB,EAA8B;EAC5B;EACA,QAAIoU,IAAI,CAACzM,IAAD,CAAJ,GAAa,GAAjB,EAAsB;EACpBrG,MAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACD,KAJ2B;;;EAO5BrG,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAJ;EACD,GARD,MAQO,IAAIrG,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EAC7BxE,IAAAA,OAAO,CAACC,IAAR,CAAa,oBAAoB0D,IAApB,GAA2B,GAAxC;EACD;;EAED,SAAOrG,CAAP;EACD,CAtBD;;EAwBA,IAAI+S,SAAS,GAAGF,OAAhB;;EAGA,IAAIG,KAAK,GAAG,SAASA,KAAT,CAAezC,CAAf,EAAkB0C,CAAlB,EAAqB5M,IAArB,EAA2B;EACrC,MAAInH,CAAC,GAAG,CAAR;EACAqR,EAAAA,CAAC,GAAGA,CAAC,CAACtQ,KAAF,EAAJ;;EAEA,SAAOsQ,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAP,EAAsB;EACpB;EACA1C,IAAAA,CAAC,GAAGA,CAAC,CAAC3G,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACAnH,IAAAA,CAAC,IAAI,CAAL;EACD,GARoC;;;EAWrC,MAAIqR,CAAC,CAAC4C,OAAF,CAAUF,CAAV,EAAa5M,IAAb,CAAJ,EAAwB;EACtBnH,IAAAA,CAAC,IAAI,CAAL;EACD;;EAED,SAAOA,CAAP;EACD,CAhBD;EAiBA;;;EAGA,IAAIkU,OAAO,GAAG,SAASA,OAAT,CAAiB7C,CAAjB,EAAoB0C,CAApB,EAAuB5M,IAAvB,EAA6B;EACzC,MAAIkK,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAJ,EAAmB;EACjB,WAAOD,KAAK,CAACzC,CAAD,EAAI0C,CAAJ,EAAO5M,IAAP,CAAZ;EACD,GAFD,MAEO;EACL,WAAO2M,KAAK,CAACC,CAAD,EAAI1C,CAAJ,EAAOlK,IAAP,CAAL,GAAoB,CAAC,CAA5B,CADK;EAEN;EACF,CAND;;EAQA,IAAIgN,GAAG,GAAGD,OAAV;EAGA;;EAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkB/C,CAAlB,EAAqB0C,CAArB,EAAwB;EACrC,MAAIM,KAAK,GAAGN,CAAC,CAACvV,IAAF,KAAW6S,CAAC,CAAC7S,IAAF,EAAvB,CADqC;;EAGrC6S,EAAAA,CAAC,GAAGA,CAAC,CAAC7S,IAAF,CAAOuV,CAAC,CAACvV,IAAF,EAAP,CAAJ;;EAEA,MAAI6S,CAAC,CAAC4C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChBM,IAAAA,KAAK,IAAI,CAAT;EACD;;EAED,SAAOA,KAAP;EACD,CAVD;EAWA;EACA;;;EAGA,IAAI9M,IAAI,GAAG,SAASA,IAAT,CAAc8J,CAAd,EAAiB0C,CAAjB,EAAoB;EAC7B;EACA;EACA,MAAIO,MAAM,GAAGP,CAAC,CAACnT,KAAF,GAAUyQ,CAAC,CAACzQ,KAAzB;EACA,MAAI0C,GAAG,GAAG;EACR2D,IAAAA,YAAY,EAAEqN,MADN;EAERzM,IAAAA,OAAO,EAAEhN,QAAQ,CAACyZ,MAAM,GAAG,IAAV,EAAgB,EAAhB;EAFT,GAAV;EAIAhR,EAAAA,GAAG,CAACiR,OAAJ,GAAc1Z,QAAQ,CAACyI,GAAG,CAACuE,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAAtB;EACAvE,EAAAA,GAAG,CAACkR,KAAJ,GAAY3Z,QAAQ,CAACyI,GAAG,CAACiR,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAApB,CAT6B;;EAW7B,MAAI7T,GAAG,GAAG2Q,CAAC,CAACtQ,KAAF,EAAV;EACAuC,EAAAA,GAAG,CAAC+Q,KAAJ,GAAYD,QAAQ,CAAC1T,GAAD,EAAMqT,CAAN,CAApB;EACArT,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAAC+Q,KAAV,EAAiB,MAAjB,CAAN,CAb6B;;EAe7B/Q,EAAAA,GAAG,CAACiF,MAAJ,GAAajF,GAAG,CAAC+Q,KAAJ,GAAY,EAAzB;EACA3T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACiF,MAAV,EAAkB,OAAlB,CAAN;EACAjF,EAAAA,GAAG,CAACiF,MAAJ,IAAc4L,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,OAAT,CAAjB,CAjB6B;EAkB7B;;EAEAzQ,EAAAA,GAAG,CAACmR,KAAJ,GAAYnR,GAAG,CAAC+Q,KAAJ,GAAY,EAAxB;EACA3T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACmR,KAAV,EAAiB,MAAjB,CAAN;EACAnR,EAAAA,GAAG,CAACmR,KAAJ,IAAaN,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,MAAT,CAAhB,CAtB6B;;EAwB7BzQ,EAAAA,GAAG,CAACsI,IAAJ,GAAWtI,GAAG,CAACmR,KAAJ,GAAY,CAAvB;EACA/T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACsI,IAAV,EAAgB,KAAhB,CAAN;EACAtI,EAAAA,GAAG,CAACsI,IAAJ,IAAYuI,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,KAAT,CAAf;EACA,SAAOzQ,GAAP;EACD,CA5BD;;EA8BA,IAAIoR,SAAS,GAAGnN,IAAhB;;EAEA,IAAIoN,WAAW,GAAG,SAASA,WAAT,CAAqBrR,GAArB,EAA0B;EAC1C5E,EAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAU4C,CAAV,EAAa;EACpCoD,IAAAA,GAAG,CAACpD,CAAD,CAAH,IAAU,CAAC,CAAX;EACD,GAFD;EAGA,SAAOoD,GAAP;EACD,CALD;EAMA;EACA;;;EAGA,IAAIsR,IAAI,GAAG,SAASA,IAAT,CAAcvD,CAAd,EAAiB0C,CAAjB,EAAoB5M,IAApB,EAA0B;EACnC4M,EAAAA,CAAC,GAAGzV,GAAG,CAACuC,OAAJ,CAAYkT,CAAZ,EAAe1C,CAAf,CAAJ,CADmC;;EAGnC,MAAIwD,QAAQ,GAAG,KAAf;;EAEA,MAAIxD,CAAC,CAAC4C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChB,QAAIrT,GAAG,GAAG2Q,CAAV;EACAA,IAAAA,CAAC,GAAG0C,CAAJ;EACAA,IAAAA,CAAC,GAAGrT,GAAJ;EACAmU,IAAAA,QAAQ,GAAG,IAAX;EACD,GAVkC;;;EAanC,MAAIvR,GAAG,GAAGoR,SAAS,CAACrD,CAAD,EAAI0C,CAAJ,CAAnB;;EAEA,MAAIc,QAAJ,EAAc;EACZvR,IAAAA,GAAG,GAAGqR,WAAW,CAACrR,GAAD,CAAjB;EACD,GAjBkC;;;EAoBnC,MAAI6D,IAAJ,EAAU;EACR;EACAA,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,QAAI,KAAKb,IAAL,CAAUa,IAAV,MAAoB,IAAxB,EAA8B;EAC5BA,MAAAA,IAAI,IAAI,GAAR;EACD;;EAED,QAAIA,IAAI,KAAK,OAAb,EAAsB;EACpBA,MAAAA,IAAI,GAAG,MAAP;EACD;;EAED,WAAO7D,GAAG,CAAC6D,IAAD,CAAV;EACD;;EAED,SAAO7D,GAAP;EACD,CApCD;;EAsCA,IAAIwR,MAAM,GAAGF,IAAb;;EAIA,IAAIG,UAAU,GAAG;EACfxM,EAAAA,MAAM,EAAE;EACNyM,IAAAA,MAAM,EAAE,EADF;EAENC,IAAAA,IAAI,EAAE;EAFA,GADO;EAKfrJ,EAAAA,IAAI,EAAE;EACJoJ,IAAAA,MAAM,EAAE,EADJ;EAEJC,IAAAA,IAAI,EAAE;EAFF,GALS;EASfT,EAAAA,KAAK,EAAE;EACLQ,IAAAA,MAAM,EAAE,EADH;EAELC,IAAAA,IAAI,EAAE;EAFD,GATQ;EAafV,EAAAA,OAAO,EAAE;EACPS,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC,GAbM;EAiBfpN,EAAAA,OAAO,EAAE;EACPmN,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC;EAjBM,CAAjB;;EAuBA,SAASC,OAAT,CAAiB7D,CAAjB,EAAoB0C,CAApB,EAAuB;EACrB,MAAIC,QAAQ,GAAG3C,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAf;EACA,MAAIoB,KAAK,GAAGnB,QAAQ,GAAGD,CAAH,GAAO1C,CAA3B;EACA,MAAI+D,OAAO,GAAGpB,QAAQ,GAAG3C,CAAH,GAAO0C,CAA7B;EACAqB,EAAAA,OAAO,GAAGA,OAAO,CAACrU,KAAR,EAAV;EACA,MAAIwG,IAAI,GAAG;EACT8M,IAAAA,KAAK,EAAE,CADE;EAET9L,IAAAA,MAAM,EAAE,CAFC;EAGTqD,IAAAA,IAAI,EAAE,CAHG;EAIT4I,IAAAA,KAAK,EAAE,CAJE;EAKTD,IAAAA,OAAO,EAAE,CALA;EAMT1M,IAAAA,OAAO,EAAE;EANA,GAAX;EAQAnJ,EAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAU6J,IAAV,EAAgB;EACxC,QAAIiO,OAAO,CAACC,MAAR,CAAeF,KAAf,EAAsBhO,IAAtB,CAAJ,EAAiC;EAC/B;EACD;;EAED,QAAIqC,GAAG,GAAG4L,OAAO,CAAC7N,IAAR,CAAa4N,KAAb,EAAoBhO,IAApB,CAAV;EACAiO,IAAAA,OAAO,GAAGA,OAAO,CAAC1K,GAAR,CAAYlB,GAAZ,EAAiBrC,IAAjB,CAAV;EACAI,IAAAA,IAAI,CAACJ,IAAD,CAAJ,GAAaqC,GAAb;EACD,GARD,EAbqB;;EAuBrB,MAAIwK,QAAJ,EAAc;EACZtV,IAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAUgY,CAAV,EAAa;EACrC,UAAI/N,IAAI,CAAC+N,CAAD,CAAJ,KAAY,CAAhB,EAAmB;EACjB/N,QAAAA,IAAI,CAAC+N,CAAD,CAAJ,IAAW,CAAC,CAAZ;EACD;EACF,KAJD;EAKD;;EAED,SAAO/N,IAAP;EACD;;;EAGD,SAASgO,SAAT,CAAmBC,KAAnB,EAA0BrO,IAA1B,EAAgC;EAC9B,MAAIqO,KAAK,KAAK,CAAd,EAAiB;EACfrO,IAAAA,IAAI,GAAGA,IAAI,CAACsO,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAP;EACD;;EAED,SAAOD,KAAK,GAAG,GAAR,GAAcrO,IAArB;EACD;;;EAGD,IAAIuO,KAAK,GAAG,SAASA,KAAT,CAAehT,KAAf,EAAsBC,GAAtB,EAA2B;EACrCA,EAAAA,GAAG,GAAGrE,GAAG,CAACuC,OAAJ,CAAY8B,GAAZ,EAAiBD,KAAjB,CAAN;EACA,MAAI6E,IAAI,GAAG2N,OAAO,CAACxS,KAAD,EAAQC,GAAR,CAAlB;EACA,MAAIgT,KAAK,GAAGjX,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBqO,KAAlB,CAAwB,UAAUN,CAAV,EAAa;EAC/C,WAAO,CAAC/N,IAAI,CAAC+N,CAAD,CAAZ;EACD,GAFW,CAAZ;;EAIA,MAAIK,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO;EACLpO,MAAAA,IAAI,EAAEA,IADD;EAELsO,MAAAA,OAAO,EAAE,KAFJ;EAGLC,MAAAA,SAAS,EAAE,KAHN;EAILC,MAAAA,OAAO,EAAE;EAJJ,KAAP;EAMD;;EAED,MAAIF,OAAJ;EACA,MAAIC,SAAJ;EACA,MAAIC,OAAJ;EACA,MAAIC,aAAa,GAAG,EAApB,CAnBqC;;EAqBrCtX,EAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAU6J,IAAV,EAAgBnH,CAAhB,EAAmByH,KAAnB,EAA0B;EAClD,QAAI+N,KAAK,GAAGnU,IAAI,CAACC,GAAL,CAASiG,IAAI,CAACJ,IAAD,CAAb,CAAZ;;EAEA,QAAIqO,KAAK,KAAK,CAAd,EAAiB;EACf;EACD;;EAED,QAAIS,YAAY,GAAGV,SAAS,CAACC,KAAD,EAAQrO,IAAR,CAA5B;EACA6O,IAAAA,aAAa,CAAChD,IAAd,CAAmBiD,YAAnB;;EAEA,QAAI,CAACJ,OAAL,EAAc;EACZA,MAAAA,OAAO,GAAGC,SAAS,GAAGG,YAAtB;;EAEA,UAAIjW,CAAC,GAAG,CAAR,EAAW;EACT;EACD,OALW;;;EAQZ,UAAIkW,QAAQ,GAAGzO,KAAK,CAACzH,CAAC,GAAG,CAAL,CAApB;EACA,UAAImW,SAAS,GAAG9U,IAAI,CAACC,GAAL,CAASiG,IAAI,CAAC2O,QAAD,CAAb,CAAhB;;EAEA,UAAIC,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBlB,MAArC,EAA6C;EAC3Ca,QAAAA,OAAO,GAAGN,SAAS,CAACC,KAAK,GAAG,CAAT,EAAYrO,IAAZ,CAAnB;EACA2O,QAAAA,SAAS,GAAG,YAAYD,OAAxB;EACD,OAHD,MAGO,IAAIM,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBjB,IAArC,EAA2Ca,SAAS,GAAG,UAAUG,YAAtB;EACnD;EACF,GA1BD,EArBqC;;EAiDrCF,EAAAA,OAAO,GAAGC,aAAa,CAACI,MAAd,CAAqB,CAArB,EAAwB,CAAxB,EAA2BzW,IAA3B,CAAgC,IAAhC,CAAV,CAjDqC;;EAmDrC,MAAI+C,KAAK,CAACuR,OAAN,CAActR,GAAd,MAAuB,IAA3B,EAAiC;EAC/BkT,IAAAA,OAAO,IAAI,MAAX;EACAC,IAAAA,SAAS,IAAI,MAAb;EACAC,IAAAA,OAAO,IAAI,MAAX;EACD,GAJD,MAIO;EACLF,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACAC,IAAAA,SAAS,GAAG,QAAQA,SAApB;EACAC,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACD;;EAED,SAAO;EACLxO,IAAAA,IAAI,EAAEA,IADD;EAELsO,IAAAA,OAAO,EAAEA,OAFJ;EAGLC,IAAAA,SAAS,EAAEA,SAHN;EAILC,IAAAA,OAAO,EAAEA;EAJJ,GAAP;EAMD,CAnED;;EAqEA,IAAIM,OAAO,GAAGX,KAAd;EAGA;EACA;EACA;EACA;;EACA,IAAIrb,SAAO,GAAG;EACZic,EAAAA,KAAK,EAAE,CAAC,CAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA,GADK;EAOZC,EAAAA,KAAK,EAAE,CAAC,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA;EAPK,CAAd;EAeA,IAAIC,QAAQ,GAAG,CAAC,IAAD,EAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EACf,CAAC,CAAD,EAAI,CAAJ,CADe;EAEf,CAAC,CAAD,EAAI,CAAJ,CAFe;EAGf,CAAC,CAAD,EAAI,CAAJ,CAHe;EAAA,CAAf;EAMA,IAAIC,OAAO,GAAG;EACZ5P,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR8F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAO7F,CAAP;EACD,GAPW;EAQZ4V,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB5V,CAArB,EAAwB;EACnC,QAAI+F,MAAM,GAAG/F,CAAC,CAACyT,OAAF,EAAb;;EAEA,QAAI1N,MAAM,IAAI,EAAd,EAAkB;EAChB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFD,MAEO,IAAI1N,MAAM,IAAI,EAAd,EAAkB;EACvB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA,IAAI1N,MAAM,IAAI,EAAd,EAAkB;EACvB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA;EACLzT,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,CAAV,CAAJ;EACD;;EAEDtM,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR8F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAO7F,CAAP;EACD,GA1BW;EA2BZgG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR+F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,WAAW,EAAE;EAHL,KAAJ,CAAN;EAKA,WAAO7F,CAAP;EACD,GAlCW;EAmCZiG,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAE,CADE;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAO7F,CAAP;EACD,GA3CW;EA4CZkG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclG,CAAd,EAAiB;EACrB,QAAIwG,QAAQ,GAAGxG,CAAC,CAACC,KAAF,EAAf;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAMjG,CAAC,CAAC6V,UAAR,CAAJ,CAFqB;;EAIrB,QAAI7V,CAAC,CAACmT,OAAF,CAAU3M,QAAV,CAAJ,EAAyB;EACvBxG,MAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,MAAd,CAAJ;EACD;;EAED3C,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAE,CADE;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAO7F,CAAP;EACD,GA3DW;EA4DZ1F,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRpF,MAAAA,IAAI,EAAE,CADE;EAERoL,MAAAA,IAAI,EAAE,CAFE;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,WAAW,EAAE;EALL,KAAJ,CAAN;EAOA,WAAO7F,CAAP;EACD,GArEW;EAsEZ0M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,QAAI8V,CAAC,GAAG9V,CAAC,CAAC0M,OAAF,EAAR;;EAEA,QAAIgJ,QAAQ,CAACI,CAAD,CAAZ,EAAiB;EACf3O,MAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,QAAAA,KAAK,EAAEob,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CADC;EAERlb,QAAAA,IAAI,EAAE8a,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CAFE;EAGR9P,QAAAA,IAAI,EAAE,CAHE;EAIRD,QAAAA,MAAM,EAAE,CAJA;EAKRD,QAAAA,MAAM,EAAE,CALA;EAMRD,QAAAA,WAAW,EAAE;EANL,OAAJ,CAAN;EAQD;;EAED,WAAO7F,CAAP;EACD,GArFW;EAsFZrF,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBqF,CAAhB,EAAmB;EACzB,QAAImC,OAAO,GAAGnC,CAAC,CAACrF,MAAF,EAAd;EACA,QAAIoI,GAAG,GAAG,OAAV;;EAEA,QAAI/C,CAAC,CAAC+V,UAAF,OAAmB,OAAvB,EAAgC;EAC9BhT,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,SAAK,IAAI7D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3F,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;EAC5C,UAAI3F,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,MAAuBiD,OAA3B,EAAoC;EAClC;EACA,YAAIzE,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,YAAIyE,OAAO,KAAK,QAAZ,IAAwBnC,CAAC,CAAC1F,KAAF,KAAY,CAAxC,EAA2C;EACzCoD,UAAAA,IAAI,IAAI,CAAR;EACD;;EAEDyJ,QAAAA,MAAM,CAACnH,CAAD,EAAI;EACRtC,UAAAA,IAAI,EAAEA,IADE;EAERpD,UAAAA,KAAK,EAAEf,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAFC;EAGRtE,UAAAA,IAAI,EAAErB,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAHE;EAIR8G,UAAAA,IAAI,EAAE,CAJE;EAKRD,UAAAA,MAAM,EAAE,CALA;EAMRD,UAAAA,MAAM,EAAE,CANA;EAORD,UAAAA,WAAW,EAAE;EAPL,SAAJ,CAAN;EASA,eAAO7F,CAAP;EACD;EACF;;EAED,WAAOA,CAAP;EACD,GArHW;EAsHZtC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,MAAAA,KAAK,EAAE,CADC;EAERM,MAAAA,IAAI,EAAE,CAFE;EAGRoL,MAAAA,IAAI,EAAE,CAHE;EAIRD,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,MAAM,EAAE,CALA;EAMRD,MAAAA,WAAW,EAAE;EANL,KAAJ,CAAN;EAQA,WAAO7F,CAAP;EACD,GAhIW;EAiIZgW,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhW,CAAhB,EAAmB;EACzBA,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIzK,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;EACA,QAAIsY,MAAM,GAAGjc,QAAQ,CAAC2D,IAAI,GAAG,EAAR,EAAY,EAAZ,CAAR,GAA0B,EAAvC;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACtC,IAAF,CAAOsY,MAAP,CAAJ;EACA,WAAOhW,CAAP;EACD,GAvIW;EAwIZiW,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjW,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIzK,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX,CAF2B;;EAI3B,QAAIsY,MAAM,GAAGjc,QAAQ,CAAC2D,IAAI,GAAG,GAAR,EAAa,EAAb,CAAR,GAA2B,GAAxC;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACtC,IAAF,CAAOsY,MAAP,CAAJ;EACA,WAAOhW,CAAP;EACD;EA/IW,CAAd;EAiJA2V,OAAO,CAAC/a,IAAR,GAAe+a,OAAO,CAAC1P,GAAvB;;EAEA,IAAIkC,OAAO,GAAG,SAASA,OAAT,CAAiBoI,CAAjB,EAAoBlK,IAApB,EAA0B;EACtC,MAAIrG,CAAC,GAAGuQ,CAAC,CAACtQ,KAAF,EAAR;EACAoG,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,MAAIsP,OAAO,CAACtP,IAAD,CAAX,EAAmB;EACjB,WAAOsP,OAAO,CAACtP,IAAD,CAAP,CAAcrG,CAAd,CAAP;EACD;;EAED,MAAIqG,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAAlC,EAA4C;EAC1CrG,IAAAA,CAAC,GAAGA,CAAC,CAACrF,MAAF,CAAS0L,IAAT,CAAJ;EACA,WAAOsP,OAAO,CAAChb,MAAR,CAAeqF,CAAf,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAdD;;;EAiBA,IAAIwS,KAAK,GAAG,SAASA,KAAT,CAAejC,CAAf,EAAkBlK,IAAlB,EAAwB;EAClC,MAAIrG,CAAC,GAAGuQ,CAAC,CAACtQ,KAAF,EAAR;EACAoG,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,MAAIsP,OAAO,CAACtP,IAAD,CAAX,EAAmB;EACjBrG,IAAAA,CAAC,GAAG2V,OAAO,CAACtP,IAAD,CAAP,CAAcrG,CAAd,CAAJ;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACArG,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,cAAd,CAAJ;EACA,WAAO9J,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAZD;;EAcA,IAAIkW,SAAS,GAAG;EACd/N,EAAAA,OAAO,EAAEA,OADK;EAEdqK,EAAAA,KAAK,EAAEA;EAFO,CAAhB;;EAKA,IAAI2D,KAAK,GAAG,SAASA,KAAT,CAAe9P,IAAf,EAAqB;EAC/B,MAAIyE,IAAI,CAAC,OAAD,CAAJ,GAAgBnF,IAAhB,CAAqB,UAAU3F,CAAV,EAAa;EACpC,WAAOA,CAAC,KAAKqG,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,MAAIyE,IAAI,CAAC,MAAD,CAAJ,GAAenF,IAAf,CAAoB,UAAU3F,CAAV,EAAa;EACnC,WAAOA,CAAC,KAAKqG,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAdD;EAeA;;;EAGA,IAAIyO,KAAK,GAAG,SAASA,KAAT,CAAelT,KAAf,EAAsB;EAChC,MAAIyE,IAAI,GAAG7H,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,MAAIqD,GAAG,GAAGrD,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAhD;;EAEA,MAAI,CAAC2H,IAAD,IAAS,CAACxE,GAAd,EAAmB;EACjB,WAAO,EAAP;EACD,GAN+B;;;EAShCwE,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CATgC;;EAWhCxE,EAAAA,GAAG,GAAGD,KAAK,CAAC3B,KAAN,GAAcC,GAAd,CAAkB2B,GAAlB,CAAN,CAXgC;;EAahC,MAAID,KAAK,CAACuR,OAAN,CAActR,GAAd,CAAJ,EAAwB;EACtB,QAAIjC,GAAG,GAAGgC,KAAV;EACAA,IAAAA,KAAK,GAAGC,GAAR;EACAA,IAAAA,GAAG,GAAGjC,GAAN;EACD,GAjB+B;;;EAoBhC,MAAIjE,CAAC,GAAGiG,KAAK,CAAC3B,KAAN,EAAR;;EAEA,MAAIkW,KAAK,CAAC9P,IAAD,CAAT,EAAiB;EACf1K,IAAAA,CAAC,GAAGA,CAAC,CAACya,IAAF,CAAO/P,IAAP,CAAJ;EACAA,IAAAA,IAAI,GAAG,MAAP;EACD,GAHD,MAGO;EACL1K,IAAAA,CAAC,GAAGA,CAAC,CAACya,IAAF,CAAO/P,IAAP,CAAJ;EACD,GA3B+B;;;EA8BhC,MAAIgQ,MAAM,GAAG,EAAb;;EAEA,SAAO1a,CAAC,CAACuX,QAAF,CAAWrR,GAAX,CAAP,EAAwB;EACtBwU,IAAAA,MAAM,CAACnE,IAAP,CAAYvW,CAAZ;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACiO,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACD;;EAED,SAAOgQ,MAAP;EACD,CAtCD;;EAwCA,IAAIC,OAAO,GAAGxB,KAAd;;EAEA,IAAIyB,QAAQ,GAAG,SAASA,QAAT,CAAkB3T,GAAlB,EAAuB;EACpC,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,EAAP;EACD;;EAED,SAAOA,GAAG,CAACI,KAAJ,CAAU,IAAV,CAAP;EACD,CAND;;EAQA,IAAIlE,SAAS,GAAG,SAASA,SAAT,CAAmBR,GAAnB,EAAwB;EACtCA,EAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA7B;EACAV,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,OAAZ,EAAqB,MAArB,CAAN;EACAjB,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,gBAAZ,EAA8B,UAAUS,CAAV,EAAa;EAC/C,WAAOA,CAAC,CAACjB,WAAF,EAAP;EACD,GAFK,CAAN;EAGA,SAAOT,GAAP;EACD,CAPD;;;EAUA,IAAIgG,QAAQ,GAAG,SAASA,QAAT,CAAkBtE,CAAlB,EAAqB;EAClC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;EACA,MAAIE,EAAE,GAAGzC,CAAC,CAACyC,EAAX;;EAEA,MAAIH,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,KAAjC,EAAwC;EACtCA,IAAAA,EAAE,GAAGkD,IAAI,CAAC3F,CAAC,CAACyC,EAAH,EAAOH,KAAP,CAAT;EACD;;EAED,MAAIG,EAAE,KAAK,IAAX,EAAiB;EACf,QAAIzC,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,MAAAA,OAAO,CAACC,IAAR,CAAa,qDAAqD3C,CAAC,CAACyC,EAAvD,GAA4D,GAAzE;EACD;;EAED,WAAO;EACLN,MAAAA,OAAO,EAAE;EACPqU,QAAAA,UAAU,EAAE;EADL;EADJ,KAAP;EAKD;;EAED,MAAI7c,KAAK,GAAG2I,KAAK,CAACG,EAAD,CAAjB;EACA,MAAI4T,MAAM,GAAG;EACXvS,IAAAA,IAAI,EAAEhF,SAAS,CAAC2D,EAAD,CADJ;EAEXgU,IAAAA,MAAM,EAAEC,OAAO,CAAC/c,KAAK,CAACiJ,GAAP,CAFJ;EAGX+T,IAAAA,cAAc,EAAEhd,KAAK,CAACyG,MAHX;EAIX;EACA2V,IAAAA,UAAU,EAAEpc,KAAK,CAACoJ,GAAN,KAAc,GAAd,GAAoB,OAApB,GAA8B,OAL/B;EAMXZ,IAAAA,OAAO,EAAE;EANE,GAAb;;EASA,MAAIkU,MAAM,CAACI,MAAX,EAAmB;EACjB,QAAIvO,GAAG,GAAGqO,QAAQ,CAAC5c,KAAK,CAACiJ,GAAP,CAAlB;EACAyT,IAAAA,MAAM,CAACO,MAAP,GAAgB;EACdhV,MAAAA,KAAK,EAAEsG,GAAG,CAAC,CAAD,CADI;EAEd2O,MAAAA,IAAI,EAAE3O,GAAG,CAAC,CAAD;EAFK,KAAhB;EAID,GApCiC;EAqClC;;;EAGA,MAAI4O,MAAM,GAAGnd,KAAK,CAACyG,MAAnB,CAxCkC;;EA0ClC,MAAI2W,MAAM,GAAGD,MAAb,CA1CkC;;EA4ClC,MAAIT,MAAM,CAACI,MAAP,KAAkB,IAAtB,EAA4B;EAC1B,QAAIJ,MAAM,CAACN,UAAP,KAAsB,OAA1B,EAAmC;EACjCgB,MAAAA,MAAM,GAAGD,MAAM,GAAG,CAAlB;EACD,KAFD,MAEO;EACL;EACAC,MAAAA,MAAM,GAAGpd,KAAK,CAACyG,MAAN,GAAe,CAAxB;EACD;EACF,GAnDiC;EAoDlC;;;EAGA,MAAIiW,MAAM,CAACI,MAAP,KAAkB,KAAtB,EAA6B;EAC3BJ,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB0W,MAAxB;EACAT,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuB,KAAvB;EACD,GAHD,MAGO,IAAI5U,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUuW,MAAM,CAACO,MAAP,CAAchV,KAAxB,EAA+ByU,MAAM,CAACO,MAAP,CAAcC,IAA7C,EAAmDC,MAAnD,CAAV,KAAyE,IAA7E,EAAmF;EACxFT,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB0W,MAAxB;EACAT,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuBX,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAFwF;EAGzF,GAHM,MAGA;EACL;EACAM,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB2W,MAAxB;EACAV,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuBX,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAHK;EAIN;;EAED,SAAOM,MAAP;EACD,CApED;;EAsEA,IAAIY,UAAU,GAAG3S,QAAjB;EAEA,IAAI4S,OAAO,GAAG,CAAC,SAAD,EAAY,QAAZ,EAAsB,MAAtB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,MAAtD,EAA8D,QAA9D,EAAwE,QAAxE,EAAkF,aAAlF,CAAd;;EAEA,IAAInb,SAAO,GAAG;EACZmE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaiX,OAAb,EAAsB1U,EAAtB,EAA0B;EAC7B,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAG7B,KAAK,CAAC6B,CAAD,EAAImX,OAAJ,EAAa,IAAb,CAAT;;EAEA,QAAI1U,EAAJ,EAAQ;EACN,WAAKA,EAAL,GAAUkD,IAAI,CAAClD,EAAD,CAAd;EACD;;EAED,WAAOzC,CAAP;EACD,GAVW;EAWZsE,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO2S,UAAU,CAAC,IAAD,CAAjB;EACD,GAbW;EAcZD,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,WAAOC,UAAU,CAAC,IAAD,CAAV,CAAiB9U,OAAjB,CAAyB6U,KAAhC;EACD,GAhBW;EAiBZI,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAOH,UAAU,CAAC,IAAD,CAAV,CAAiBR,MAAxB;EACD,GAnBW;EAoBZrW,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAO6W,UAAU,CAAC,IAAD,CAAV,CAAiB9U,OAAjB,CAAyB/B,MAAzB,GAAkC,EAAzC;EACD,GAtBW;EAuBZ2V,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,WAAOkB,UAAU,CAAC,IAAD,CAAV,CAAiBlB,UAAxB;EACD,GAzBW;EA0BZ3R,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB+J,GAAhB,EAAqB;EAC3B,WAAOC,QAAQ,CAAC,IAAD,EAAOD,GAAP,CAAf;EACD,GA5BW;EA6BZ4D,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5D,GAAjB,EAAsB;EAC7B,WAAOkE,SAAS,CAAC,IAAD,EAAOlE,GAAP,CAAhB;EACD,GA/BW;EAgCZhG,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB9B,IAAjB,EAAuB;EAC9B,WAAO6P,SAAS,CAAC/N,OAAV,CAAkB,IAAlB,EAAwB9B,IAAxB,CAAP;EACD,GAlCW;EAmCZmM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenM,IAAf,EAAqB;EAC1B,WAAO6P,SAAS,CAAC1D,KAAV,CAAgB,IAAhB,EAAsBnM,IAAtB,CAAP;EACD,GArCW;EAsCZgR,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,QAAI3Z,IAAI,GAAG,KAAKA,IAAL,EAAX;EACA,WAAOF,GAAG,CAACC,UAAJ,CAAeC,IAAf,CAAP;EACD,GAzCW;EA0CZiV,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBtM,IAAlB,EAAwB;EAChC,WAAOuM,UAAU,CAAC,IAAD,EAAOvM,IAAP,CAAjB;EACD,GA5CW;EA6CZwM,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxM,IAAjB,EAAuB;EAC9B,WAAO0M,SAAS,CAAC,IAAD,EAAO1M,IAAP,CAAhB;EACD,GA/CW;EAgDZI,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc9K,CAAd,EAAiB0K,IAAjB,EAAuB;EAC3B,WAAO2N,MAAM,CAAC,IAAD,EAAOrY,CAAP,EAAU0K,IAAV,CAAb;EACD,GAlDW;EAmDZuO,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejZ,CAAf,EAAkB;EACvB,QAAI,CAACA,CAAL,EAAQ;EACNA,MAAAA,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,EAAJ;EACD;;EAED,WAAOqV,OAAO,CAAC,IAAD,EAAO5Z,CAAP,CAAd;EACD,GAzDW;EA0DZya,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/P,IAAd,EAAoB;EACxB,QAAIrG,CAAC,GAAG,KAAK4J,GAAL,CAAS,CAAT,EAAYvD,IAAZ,CAAR;EACA,WAAOrG,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAP;EACD,GA7DW;EA8DZ;EACAiR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjR,IAAd,EAAoB;EACxB,QAAIrG,CAAC,GAAG,KAAK8J,QAAL,CAAc,CAAd,EAAiBzD,IAAjB,CAAR;EACA,WAAOrG,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAP;EACD,GAlEW;EAmEZqE,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B;EACA,QAAI,CAAC,KAAK5K,KAAN,IAAe,KAAKA,KAAL,KAAe,CAAlC,EAAqC;EACnC,aAAO,KAAP;EACD;;EAED,WAAO,CAAC9B,KAAK,CAAC,KAAKrC,CAAL,CAAOkE,OAAP,EAAD,CAAb;EACD,GA1EW;EA2EZ;EACA,UAAQ,SAAS0X,KAAT,CAAc9U,EAAd,EAAkB;EACxB,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,CAACyC,EAAF,GAAOkD,IAAI,CAAClD,EAAD,EAAKzC,CAAC,CAACuC,SAAP,CAAX,CAFwB;;EAIxB,WAAOvC,CAAP;EACD,GAjFW;EAkFZ;EACA8U,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAezO,IAAf,EAAqBwL,EAArB,EAAyB;EAC9B,WAAOyE,OAAO,CAAC,IAAD,EAAOjQ,IAAP,EAAawL,EAAb,CAAd;EACD,GArFW;EAsFZ2F,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIxR,IAAI,GAAG,KAAKA,IAAL,EAAX,CAD0B;;EAG1B,QAAIA,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAvB,EAA2B;EACzB,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD,GA9FW;EA+FZyR,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO,CAAC,KAAKD,OAAL,EAAR;EACD,GAjGW;EAkGZ;EACAE,EAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClBhV,IAAAA,OAAO,CAACgV,GAAR,CAAY,EAAZ;EACAhV,IAAAA,OAAO,CAACgV,GAAR,CAAYtJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GAvGW;EAwGZuJ,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1BjV,IAAAA,OAAO,CAACgV,GAAR,CAAY,EAAZ;EACAhV,IAAAA,OAAO,CAACgV,GAAR,CAAYtJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GA5GW;EA6GZxB,EAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;EACpB,QAAIgL,KAAK,GAAG,IAAZ;;EAEA,WAAOV,OAAO,CAAC/R,MAAR,CAAe,UAAUC,CAAV,EAAaiB,IAAb,EAAmB;EACvCjB,MAAAA,CAAC,CAACiB,IAAD,CAAD,GAAUuR,KAAK,CAACvR,IAAD,CAAL,EAAV;EACA,aAAOjB,CAAP;EACD,KAHM,EAGJ,EAHI,CAAP;EAID,GApHW;EAqHZyS,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,QAAIpV,EAAE,GAAG,KAAK6B,QAAL,EAAT;EACA,QAAI1J,IAAI,GAAG,KAAKwJ,MAAL,CAAY,IAAZ,IAAoB,GAApB,GAA0B,KAAKA,MAAL,CAAY,cAAZ,CAA1B,GAAwD,GAAxD,GAA8D,KAAK1G,IAAL,EAAzE;EACA9C,IAAAA,IAAI,IAAI,cAAc,KAAKwJ,MAAL,CAAY,MAAZ,CAAtB;EACA1B,IAAAA,OAAO,CAACgV,GAAR,CAAY,MAAZ,EAAoB9c,IAAI,GAAG,WAAP,GAAqB6H,EAAE,CAACqB,IAAxB,GAA+B,IAA/B,GAAsCrB,EAAE,CAACN,OAAH,CAAW/B,MAAjD,GAA0D,GAA9E;EACA,WAAO,IAAP;EACD,GA3HW;EA4HZ;EACA0X,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnc,CAAd,EAAiB;EACrBA,IAAAA,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,CAAiBvE,CAAjB,CAAJ;EACA,WAAOA,CAAC,CAACiZ,KAAF,CAAQ,IAAR,CAAP;EACD,GAhIW;EAiIZmD,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIpc,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,CAAiB6B,IAAI,CAACyH,GAAL,EAAjB,CAAR;EACA,WAAO7N,CAAC,CAACiZ,KAAF,CAAQ,IAAR,CAAP;EACD,GApIW;EAqIZoD,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7Z,KAAnB,EAA0B;EACnC;EACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAK0X,UAAL,GAAkB1X,KAAlB;EACA,aAAO,IAAP;EACD;;EAED,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,GAAoBC,IAApB,EAAR;EACA,UAAI5F,GAAG,GAAGgR,IAAI,CAAC,OAAD,CAAJ,GAAgBmD,OAAhB,CAAwB9P,KAAxB,CAAV;;EAEA,UAAIrE,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAGgR,IAAI,CAAC,MAAD,CAAJ,GAAemD,OAAf,CAAuB9P,KAAvB,CAAN;EACD;;EAED,UAAIrE,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAG,CAAN,CADc;EAEf;;EAED,WAAK+b,UAAL,GAAkB/b,GAAlB;EACD,KAdD,MAcO;EACL4I,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb,EAAuExE,KAAvE;EACD;;EAED,WAAO,IAAP;EACD;EA/JW,CAAd;;AAkKApC,WAAO,CAACkc,KAAR,GAAgBlc,SAAO,CAACib,KAAxB;AACAjb,WAAO,CAACmc,KAAR,GAAgBnc,SAAO,CAAC8W,OAAxB;AACA9W,WAAO,CAACoc,IAAR,GAAepc,SAAO,CAAC+Y,KAAvB;EACA,IAAIsD,SAAS,GAAGrc,SAAhB;;EAIA,IAAIsc,YAAY,GAAG7a,GAAG,CAACC,UAAvB;;EAEA,IAAI6a,QAAQ,GAAG,SAASA,QAAT,CAAkB/a,CAAlB,EAAqB;EAClC;EACA,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,IAAAA,CAAC,GAAGxD,QAAQ,CAACwD,CAAD,EAAI,EAAJ,CAAZ;EACD;;EAED,SAAOA,CAAP;EACD,CAPD;;EASA,IAAI8M,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;EAEA,IAAIkO,OAAO,GAAG,SAASA,OAAT,CAAiBvY,CAAjB,EAAoBJ,GAApB,EAAyByG,IAAzB,EAA+B;EAC3C,MAAI9I,CAAC,GAAG8M,KAAK,CAAC4D,OAAN,CAAc5H,IAAd,CAAR;EACA,MAAI6B,GAAG,GAAGmC,KAAK,CAACsK,KAAN,CAAYpX,CAAZ,EAAe8M,KAAK,CAAC5L,MAArB,CAAV;;EAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgJ,GAAG,CAACzJ,MAAxB,EAAgCS,CAAC,EAAjC,EAAqC;EACnC,QAAIsZ,IAAI,GAAG5Y,GAAG,CAACsI,GAAG,CAAChJ,CAAD,CAAJ,CAAH,EAAX;EACAc,IAAAA,CAAC,CAACkI,GAAG,CAAChJ,CAAD,CAAJ,CAAD,CAAUsZ,IAAV;EACD;;EAED,SAAOxY,CAAP;EACD,CAVD;;EAYA,IAAIE,GAAG,GAAG;EACRiG,EAAAA,YAAY,EAAE,SAASA,YAAT,CAAsBnG,CAAtB,EAAyBzC,CAAzB,EAA4B;EACxCA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI4E,OAAO,GAAGnC,CAAC,CAAC6F,WAAF,EAAd;EACA,QAAIY,IAAI,GAAGtE,OAAO,GAAG5E,CAArB,CAHwC;;EAKxC,WAAOyC,CAAC,CAACF,KAAF,GAAU2G,IAAjB;EACD,GAPO;EAQRM,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/G,CAAjB,EAAoBzC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAIkJ,IAAI,GAAGzG,CAAC,CAAC8F,MAAF,KAAavI,CAAxB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACL,MAAhC;EACA,WAAO9F,CAAC,CAACF,KAAF,GAAUoC,KAAjB;EACD,GAbO;EAcRuR,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBzT,CAAjB,EAAoBzC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA,QAAIwG,IAAI,GAAGzG,CAAC,CAAC+F,MAAF,KAAaxI,CAAxB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACJ,MAAhC;EACA/F,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX,CAL8B;EAM9B;EACA;EACA;EACA;EACA;EACA;;EAEAqW,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,QAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD,GA7BO;EA8BR4T,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe1T,CAAf,EAAkBzC,CAAlB,EAAqB;EAC1BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;;EAEA,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,GAAG,CAAR,EAAW;EAChBA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA,QAAIwG,IAAI,GAAGzG,CAAC,CAACgG,IAAF,KAAWzI,CAAtB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACH,IAAhC;EACAhG,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX;EACAiF,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAEzI;EADE,KAAJ,CAAN;EAGAgb,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,QAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD,GAhDO;EAiDR;EACA9E,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcgF,CAAd,EAAiB1B,GAAjB,EAAsB;EAC1B,QAAI7E,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,mCAAV,CAAR;;EAEA,QAAI,CAACZ,CAAL,EAAQ;EACN;EACAA,MAAAA,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,qBAAV,CAAJ;;EAEA,UAAI,CAACZ,CAAL,EAAQ;EACN,eAAOuG,CAAC,CAACF,KAAT;EACD;;EAEDrG,MAAAA,CAAC,CAAC6b,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,GAAf,EARM;EASP;;EAED,QAAIpI,GAAG,GAAG,KAAV;EACA,QAAIlH,IAAI,GAAGjM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;EACA,QAAIsM,MAAM,GAAGhM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAArB;;EAEA,QAAIuM,IAAI,GAAG,EAAX,EAAe;EACbkH,MAAAA,GAAG,GAAG,IAAN;EACD,KApByB;;;EAuB1B,QAAIA,GAAG,KAAK,KAAZ,EAAmB;EACjB,UAAIzT,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBuM,IAAI,KAAK,EAA9B,EAAkC;EAChC;EACAA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIvM,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBuM,IAAI,GAAG,EAA5B,EAAgC;EAC9B;EACAA,QAAAA,IAAI,IAAI,EAAR;EACD;EACF;;EAEDhG,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAJ;EACAhG,IAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAASA,MAAT,CAAJ;EACA/F,IAAAA,CAAC,GAAGA,CAAC,CAAC8F,MAAF,CAAS,CAAT,CAAJ;EACA9F,IAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAc,CAAd,CAAJ;EACA,WAAO7F,CAAC,CAACF,KAAT;EACD,GA1FO;EA2FRlF,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcoF,CAAd,EAAiBzC,CAAjB,EAAoB;EACxBA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ,CADwB;;EAGxB,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV,UAAIjD,KAAK,GAAG0F,CAAC,CAAC1F,KAAF,EAAZ;EACA,UAAIoO,GAAG,GAAGF,cAAc,CAAClO,KAAD,CAAxB,CAFU;;EAIV,UAAIA,KAAK,KAAK,CAAV,IAAeiD,CAAC,KAAK,EAArB,IAA2B8a,YAAY,CAACrY,CAAC,CAACtC,IAAF,EAAD,CAA3C,EAAuD;EACrDgL,QAAAA,GAAG,GAAG,EAAN;EACD;;EAED,UAAInL,CAAC,GAAGmL,GAAR,EAAa;EACXnL,QAAAA,CAAC,GAAGmL,GAAJ;EACD;EACF,KAduB;;;EAiBxB,QAAInL,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRpF,MAAAA,IAAI,EAAE2C;EADE,KAAJ,CAAN;EAGA,WAAOyC,CAAC,CAACF,KAAT;EACD,GApHO;EAqHR;EACAxF,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkBzC,CAAlB,EAAqB;EAC1B,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAGkK,MAAM,CAACG,OAAP,GAAiBrK,CAAC,CAACkC,WAAF,EAAjB,CAAJ;EACD;;EAEDlC,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ,CAL0B;;EAO1B,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD;;EAED,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAI3C,IAAI,GAAGoF,CAAC,CAACpF,IAAF,EAAX,CAf0B;;EAiB1B,QAAIA,IAAI,GAAG4N,cAAc,CAACjL,CAAD,CAAzB,EAA8B;EAC5B;EACA3C,MAAAA,IAAI,GAAG4N,cAAc,CAACjL,CAAD,CAArB;EACD;;EAED4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,MAAAA,KAAK,EAAEiD,CADC;EAER3C,MAAAA,IAAI,EAAEA;EAFE,KAAJ,CAAN;EAIA,WAAOoF,CAAC,CAACF,KAAT;EACD,GAjJO;EAkJRpC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiBzC,CAAjB,EAAoB;EACxBA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRtC,MAAAA,IAAI,EAAEH;EADE,KAAJ,CAAN;EAGA,WAAOyC,CAAC,CAACF,KAAT;EACD,GAxJO;EAyJR4P,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB1P,CAAnB,EAAsBzC,CAAtB,EAAyB;EAClCA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA1C,IAAAA,CAAC,IAAI,CAAL,CAHkC;;EAKlC,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,IAAI,GAAT,EAAc;EACnBA,MAAAA,CAAC,GAAG,GAAJ;EACD;;EAEDyC,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACAnI,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAMrM,CAAN,EAAS,KAAT,CAAJ;EACAgb,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,MAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD;EAxKO,CAAV;EA2KA,IAAI2Y,WAAS,GAAG;EACd5S,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB/L,GAArB,EAA0B;EACrC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACiG,YAAJ,CAAiBnG,CAAjB,EAAoBlG,GAApB,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO+c,eAAP,EAAP;EACD,GATa;EAUd5S,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhM,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC6G,OAAJ,CAAY/G,CAAZ,EAAelG,GAAf,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOgd,UAAP,EAAP;EACD,GAlBa;EAmBd5S,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBjM,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACuT,OAAJ,CAAYzT,CAAZ,EAAelG,GAAf,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOid,UAAP,EAAP;EACD,GA3Ba;EA4Bd5S,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclM,GAAd,EAAmB;EACvB,QAAI6B,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI7B,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAalG,GAAb,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAOrE,CAAC,CAAC+F,QAAF,EAAP;EACD,GAtCa;EAuCd;EACAmX,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB/e,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,UAAI6Y,OAAO,GAAGhf,GAAG,GAAG,CAApB;;EAEAgf,MAAAA,OAAO,GAAGA,OAAO,GAAG,EAApB;;EAEA,UAAIC,KAAK,GAAGhf,QAAQ,CAACD,GAAD,EAAM,EAAN,CAApB;;EAEAkG,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAa+Y,KAAb,CAAV;EACA/Y,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACuT,OAAJ,CAAYzT,CAAZ,EAAe8Y,OAAf,CAAV;EACA,aAAO9Y,CAAP;EACD;;EAED,QAAIrE,CAAC,GAAG,KAAKA,CAAb;EACA,QAAIqK,IAAI,GAAGrK,CAAC,CAAC+F,QAAF,EAAX;EACA,QAAIqE,MAAM,GAAGpK,CAAC,CAACid,UAAF,EAAb;EACA7S,IAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACA,WAAOC,IAAI,GAAGD,MAAd;EACD,GA5Da;EA6Dd;EACAsG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/N,GAAhB,EAAqB;EAC3B,QAAI3C,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI2C,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAG,KAAKA,GAAX;EACA,UAAI7E,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,mBAAV,CAAR;;EAEA,UAAIZ,CAAJ,EAAO;EACL,YAAIuM,IAAI,GAAGjM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;EAEA,YAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,IAAb,EAAmB;EACjBuM,UAAAA,IAAI,IAAI,EAAR;EACD;;EAEDhG,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAagG,IAAb,CAAV;EACD;;EAED,aAAOhG,CAAP;EACD,KAnB0B;;;EAsB3B,QAAIqM,MAAM,GAAG1Q,CAAC,CAAC+F,QAAF,EAAb;;EAEA,QAAI2K,MAAM,GAAG,EAAb,EAAiB;EACfA,MAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACD;;EAED,QAAIA,MAAM,KAAK,CAAf,EAAkB;EAChBA,MAAAA,MAAM,GAAG,EAAT;EACD;;EAED,WAAOA,MAAP;EACD,GA/Fa;EAgGd;EACArR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsD,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAClF,IAAJ,CAASgF,CAAT,EAAY1B,GAAZ,CAAV;EACA,aAAO0B,CAAP;EACD;;EAED,WAAO,GAAGU,MAAH,CAAU,KAAKiQ,GAAL,EAAV,EAAsB,GAAtB,EAA2BjQ,MAA3B,CAAkClD,GAAG,CAACa,OAAJ,CAAY,KAAK0H,MAAL,EAAZ,CAAlC,EAA8DrF,MAA9D,CAAqE,KAAK0H,IAAL,EAArE,CAAP;EACD,GAzGa;EA0Gd;EACAA,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjK,KAAd,EAAqB;EACzB,QAAI6a,KAAK,GAAG,IAAZ;EACA,QAAIhT,IAAI,GAAG,KAAKA,IAAL,EAAX;;EAEA,QAAIA,IAAI,IAAI,EAAZ,EAAgB;EACdgT,MAAAA,KAAK,GAAG,IAAR;EACD;;EAED,QAAI,OAAO7a,KAAP,KAAiB,QAArB,EAA+B;EAC7B,aAAO6a,KAAP;EACD,KAVwB;;;EAazB,QAAIhZ,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA9B,IAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,GAAoBC,IAApB,EAAR,CAdyB;EAezB;;EAEA,QAAIsG,IAAI,IAAI,EAAR,IAAc7H,KAAK,KAAK,IAA5B,EAAkC;EAChC;EACA6H,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOhG,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,QAAIA,IAAI,GAAG,EAAP,IAAa7H,KAAK,KAAK,IAA3B,EAAiC;EAC/B6H,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOhG,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,WAAOhG,CAAP;EACD,GAxIa;EAyId;EACAiZ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB3a,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIwa,KAAK,GAAG;EACVC,QAAAA,OAAO,EAAE,QADC;EAEVC,QAAAA,SAAS,EAAE,QAFD;EAGVC,QAAAA,IAAI,EAAE,SAHI;EAIVC,QAAAA,KAAK,EAAE,SAJG;EAKVC,QAAAA,SAAS,EAAE,QALD;EAMVC,QAAAA,OAAO,EAAE,QANC;EAOVC,QAAAA,MAAM,EAAE,QAPE;EAQVC,QAAAA,KAAK,EAAE,SARG;EASVC,QAAAA,QAAQ,EAAE;EATA,OAAZ;EAWA,UAAI3Z,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;EACAA,MAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,EAAN;;EAEA,UAAIyZ,KAAK,CAAC3T,cAAN,CAAqBjH,GAArB,MAA8B,IAAlC,EAAwC;EACtC0B,QAAAA,CAAC,GAAGA,CAAC,CAAChF,IAAF,CAAOke,KAAK,CAAC5a,GAAD,CAAZ,CAAJ;EACD;;EAED,aAAO0B,CAAP;EACD;;EAED,QAAIoF,CAAC,GAAG,KAAKY,IAAL,EAAR;;EAEA,QAAIZ,CAAC,GAAG,CAAR,EAAW;EACT,aAAO,OAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,WAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,WAAO,OAAP;EACD,GAxLa;EAyLd;EACA6H,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAanT,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,aAAO,KAAKwB,GAAL,CAASpG,GAAT,CAAP;EACD;;EAED,WAAO,KAAKsK,MAAL,CAAY,KAAZ,CAAP;EACD;EAhMa,CAAhB;EAkMA,IAAIwV,OAAO,GAAGnB,WAAd;EAEA,IAAIoB,SAAS,GAAG;EACd;EACAjf,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcd,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACtF,IAAJ,CAASoF,CAAT,EAAYlG,GAAZ,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO8F,OAAP,EAAP;EACD,GAVa;EAWd;EACAwE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa9H,KAAb,EAAoB;EACvB,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAO,KAAK/C,CAAL,CAAOme,MAAP,EAAP;EACD;;EAED,QAAItT,QAAQ,GAAG,KAAKvG,KAAL,EAAf;EACA,QAAIuY,IAAI,GAAGra,KAAX,CANuB;;EAQvB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,EAAR;EACA+Y,MAAAA,IAAI,GAAG1N,IAAI,CAAC,OAAD,CAAJ,GAAgBmD,OAAhB,CAAwB9P,KAAxB,CAAP;;EAEA,UAAIqa,IAAI,KAAK,CAAC,CAAd,EAAiB;EACfA,QAAAA,IAAI,GAAG1N,IAAI,CAAC,MAAD,CAAJ,GAAemD,OAAf,CAAuB9P,KAAvB,CAAP;EACD;EACF,KAfsB;;;EAkBvB,QAAI8H,GAAG,GAAG,KAAKtK,CAAL,CAAOme,MAAP,EAAV;EACA,QAAIrT,IAAI,GAAGR,GAAG,GAAGuS,IAAjB;EACA,QAAIxY,CAAC,GAAG,KAAK8J,QAAL,CAAcrD,IAAI,GAAG,EAArB,EAAyB,OAAzB,CAAR,CApBuB;;EAsBvBU,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAEQ,QAAQ,CAACR,IAAT,EADE;EAERD,MAAAA,MAAM,EAAES,QAAQ,CAACT,MAAT,EAFA;EAGRD,MAAAA,MAAM,EAAEU,QAAQ,CAACV,MAAT;EAHA,KAAJ,CAAN;EAKA,WAAO9F,CAAP;EACD,GAxCa;EAyCd;EACAoL,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjN,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAOoM,IAAI,CAAC,MAAD,CAAJ,GAAe,KAAK7E,GAAL,EAAf,CAAP;EACD;;EAED,QAAIjG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAM9H,KAAN,CAAJ;EACA,WAAO6B,CAAP;EACD,GAlDa;EAmDd;EACA1F,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe6D,KAAf,EAAsB;EAC3B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC5F,KAAJ,CAAU0F,CAAV,EAAa7B,KAAb,CAAV;EACA,aAAO6B,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO6F,QAAP,EAAP;EACD;EA5Da,CAAhB;EA8DA,IAAIuY,OAAO,GAAGF,SAAd;;EAEA,IAAIG,YAAY,GAAG,SAASA,YAAT,CAAsBha,CAAtB,EAAyB;EAC1CA,EAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAAS,CAAT,CAAJ;EACA/F,EAAAA,CAAC,GAAGA,CAAC,CAAC8F,MAAF,CAAS,CAAT,CAAJ;EACA9F,EAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAc,CAAd,CAAJ;EACA,SAAO7F,CAAP;EACD,CALD;;EAOA,IAAIia,SAAS,GAAG;EACd;EACAvK,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB5V,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwP,SAAJ,CAAc1P,CAAd,EAAiBlG,GAAjB,CAAV;EACA,aAAOkG,CAAP;EACD,KALgC;;;EAQjC,QAAIka,GAAG,GAAG,CAAV;EACA,QAAI5f,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;EACA,QAAI5B,GAAJ,CAViC;;EAYjC,SAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI5E,KAArB,EAA4B4E,CAAC,EAA7B,EAAiC;EAC/BU,MAAAA,GAAG,GAAG,IAAImC,IAAJ,EAAN;EACAnC,MAAAA,GAAG,CAACua,OAAJ,CAAY,CAAZ;EACAva,MAAAA,GAAG,CAACwa,WAAJ,CAAgB,KAAKze,CAAL,CAAOmL,WAAP,EAAhB,EAH+B;;EAK/BlH,MAAAA,GAAG,CAACya,QAAJ,CAAa,CAAb;EACAza,MAAAA,GAAG,CAAC0a,UAAJ,CAAe,CAAf;EACA1a,MAAAA,GAAG,CAAC2a,QAAJ,CAAarb,CAAb;EACAU,MAAAA,GAAG,CAACya,QAAJ,CAAa,CAAC,CAAd,EAR+B;;EAU/BH,MAAAA,GAAG,IAAIta,GAAG,CAAC6B,OAAJ,EAAP;EACD;;EAED,WAAOyY,GAAG,GAAG,KAAKve,CAAL,CAAO8F,OAAP,EAAb;EACD,GA5Ba;EA6Bd;EACAyE,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpM,GAAd,EAAmB;EACvB;EACA,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQ,CAAR,CAAJ;EACA0F,MAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,MAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAM,QAAN,CAAJ;EACAjG,MAAAA,CAAC,GAAGga,YAAY,CAACha,CAAD,CAAhB,CALqB;;EAOrB,UAAIA,CAAC,CAAC2L,SAAF,OAAkB,UAAtB,EAAkC;EAChC3L,QAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,MAAT,CAAJ;EACD;;EAED9P,MAAAA,GAAG,IAAI,CAAP,CAXqB;;EAarBkG,MAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM9P,GAAN,EAAW,OAAX,CAAJ;EACA,aAAOkG,CAAP;EACD,KAjBsB;;;EAoBvB,QAAIJ,GAAG,GAAG,KAAKK,KAAL,EAAV;EACAL,IAAAA,GAAG,GAAGA,GAAG,CAACtF,KAAJ,CAAU,CAAV,CAAN;EACAsF,IAAAA,GAAG,GAAGA,GAAG,CAAChF,IAAJ,CAAS,CAAT,CAAN;EACAgF,IAAAA,GAAG,GAAGoa,YAAY,CAACpa,GAAD,CAAlB;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACqG,GAAJ,CAAQ,QAAR,CAAN,CAxBuB;;EA0BvB,QAAIrG,GAAG,CAAC+L,SAAJ,OAAoB,UAAxB,EAAoC;EAClC/L,MAAAA,GAAG,GAAGA,GAAG,CAACgK,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD,KA5BsB;;;EA+BvB,QAAI4Q,KAAK,GAAG,CAAZ;;EAEA,QAAI5a,GAAG,CAAChF,IAAJ,OAAe,CAAnB,EAAsB;EACpB4f,MAAAA,KAAK,GAAG,CAAR;EACD;;EAED5a,IAAAA,GAAG,GAAGA,GAAG,CAAC6a,KAAJ,CAAU,CAAV,EAAa,QAAb,CAAN;EACA,QAAIC,OAAO,GAAG,KAAK5a,KAAnB,CAtCuB;;EAwCvB,QAAIF,GAAG,CAACE,KAAJ,GAAY4a,OAAhB,EAAyB;EACvB,aAAO,CAAP;EACD,KA1CsB;;;EA6CvB,QAAIxb,CAAC,GAAG,CAAR;EACA,QAAIyb,SAAS,GAAG,KAAKrgB,KAAL,KAAe,CAA/B;EACAsF,IAAAA,GAAG,CAACE,KAAJ,IAAaqG,YAAY,CAACD,IAAb,GAAoByU,SAAjC;EACAzb,IAAAA,CAAC,IAAIyb,SAAL;;EAEA,WAAOzb,CAAC,GAAG,EAAX,EAAeA,CAAC,EAAhB,EAAoB;EAClB,UAAIU,GAAG,CAACE,KAAJ,GAAY4a,OAAhB,EAAyB;EACvB,eAAOxb,CAAC,GAAGsb,KAAX;EACD;;EAED5a,MAAAA,GAAG,GAAGA,GAAG,CAACgK,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD;;EAED,WAAO,EAAP;EACD,GAzFa;EA0Fd;EACA+B,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBxN,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAO+I,MAAM,CAAC,MAAD,CAAN,GAAiB,KAAKnN,KAAL,EAAjB,CAAP;EACD;;EAED,QAAI0F,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQ6D,KAAR,CAAJ;EACA,WAAO6B,CAAP;EACD,GAnGa;EAoGd;EACA0M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5S,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAI,OAAO5E,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,QAAAA,GAAG,GAAGA,GAAG,CAACyF,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACAzF,QAAAA,GAAG,GAAGC,QAAQ,CAACD,GAAD,EAAM,EAAN,CAAd;EACD;;EAED,UAAI4b,QAAQ,CAAC5b,GAAD,CAAZ,EAAmB;EACjB,YAAIkG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA,YAAI2a,MAAM,GAAGlF,QAAQ,CAAC5b,GAAD,CAAR,CAAc,CAAd,CAAb;EACAkG,QAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQsgB,MAAR,CAAJ;EACA5a,QAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,QAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,eAAOnI,CAAP;EACD;EACF;;EAED,QAAI1F,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;;EAEA,SAAK,IAAItC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwW,QAAQ,CAACjX,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;EACxC,UAAI5E,KAAK,GAAGob,QAAQ,CAACxW,CAAD,CAAR,CAAY,CAAZ,CAAZ,EAA4B;EAC1B,eAAOA,CAAC,GAAG,CAAX;EACD;EACF;;EAED,WAAO,CAAP;EACD,GA/Ha;EAgId;EACAvE,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBwD,KAAhB,EAAuB;EAC7B,QAAI4E,GAAG,GAAG,OAAV;;EAEA,QAAI,KAAKgT,UAAL,OAAsB,OAA1B,EAAmC;EACjChT,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,QAAI5E,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,WAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3F,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;EAC5C,YAAIf,KAAK,KAAK5E,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAAd,EAAkC;EAChCc,UAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQf,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAAR,CAAJ;EACAc,UAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,UAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACD;EACF;;EAED,aAAOnI,CAAP;EACD;;EAED,QAAI1F,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;;EAEA,SAAK,IAAIgG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGjO,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAb,GAAsB,CAA5C,EAA+C+I,EAAE,EAAjD,EAAqD;EACnD,UAAIlN,KAAK,IAAIf,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAb,EAAiB,CAAjB,CAAT,IAAgClN,KAAK,GAAGf,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAE,GAAG,CAAlB,EAAqB,CAArB,CAA5C,EAAqE;EACnE,eAAOjO,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAb,EAAiB,CAAjB,CAAP;EACD;EACF;;EAED,WAAO,QAAP;EACD,GA/Ja;EAgKd;EACA9J,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5D,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYlG,GAAZ,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOmL,WAAP,EAAP;EACD,GAzKa;EA0Kd;EACA6F,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarO,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,EAAN,CAFqB;;EAIrB,UAAI/B,IAAI,GAAGsC,CAAC,CAACrE,CAAF,CAAImL,WAAJ,EAAX,CAJqB;;EAMrB,UAAIxI,GAAG,KAAK,IAAR,IAAgBZ,IAAI,GAAG,CAA3B,EAA8B;EAC5BsC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYtC,IAAI,GAAG,CAAC,CAApB,CAAV;EACD,OARoB;;;EAWrB,UAAIY,GAAG,KAAK,IAAR,IAAgBZ,IAAI,GAAG,CAA3B,EAA8B;EAC5BsC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYtC,IAAI,GAAG,CAAC,CAApB,CAAV;EACD;;EAED,aAAOsC,CAAP;EACD;;EAED,QAAI,KAAKrE,CAAL,CAAOmL,WAAP,KAAuB,CAA3B,EAA8B;EAC5B,aAAO,IAAP;EACD;;EAED,WAAO,IAAP;EACD,GAnMa;EAoMd;EACAkP,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7X,KAAhB,EAAuB;EAC7B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvBP,MAAAA,KAAK,GAAGmB,MAAM,CAACnB,KAAD,CAAd;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,aAAd,EAA6B,IAA7B,CAAR,CAFuB;;EAIvBpB,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAJuB;;EAMvB,UAAI,CAACpB,KAAL,EAAY;EACVuE,QAAAA,OAAO,CAACC,IAAR,CAAa,iCAAb;EACA,eAAO,IAAP;EACD,OATsB;;;EAYvB,UAAIxE,KAAK,CAACM,MAAN,KAAiB,CAAjB,IAAsB,aAAa+G,IAAb,CAAkBrH,KAAlB,CAA1B,EAAoD;EAClDA,QAAAA,KAAK,GAAG,OAAOA,KAAf;EACD;;EAED,UAAIT,IAAI,GAAGiG,MAAM,CAACxF,KAAD,CAAjB;;EAEA,UAAIH,KAAK,CAACN,IAAD,CAAT,EAAiB;EACf,eAAO,IAAP;EACD,OApBsB;;;EAuBvBA,MAAAA,IAAI,GAAG6C,IAAI,CAAC0K,KAAL,CAAWvN,IAAI,GAAG,EAAlB,IAAwB,EAA/B;EACA,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP,CAxBuB;EAyBxB;;EAED,WAAO,KAAKyK,OAAL,CAAa,QAAb,EAAuBzK,IAAvB,EAAP;EACD,GAlOa;EAmOd;EACAuY,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB9X,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7BpB,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,gCAAd,EAAgD,UAAUgR,CAAV,EAAa0C,CAAb,EAAgBb,CAAhB,EAAmB;EACzE,cAAIA,CAAC,CAAC/X,KAAF,CAAQ,WAAR,CAAJ,EAA0B;EACxB4Y,YAAAA,CAAC,GAAG,MAAMA,CAAV;EACD;;EAED,iBAAOA,CAAP;EACD,SANO,CAAR;EAOA9U,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR,CAV6B;EAW9B;;EAED,UAAI7B,IAAI,GAAGiG,MAAM,CAACxF,KAAD,CAAjB;;EAEA,UAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;EAChBuE,QAAAA,OAAO,CAACC,IAAR,CAAa,kCAAb;EACA,eAAO,IAAP;EACD,OAnBsB;;;EAsBvB,UAAIjF,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIA,IAAI,IAAI,CAAZ,EAAe;EACbA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD,OAFD,MAEO;EACLA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAlC8B;;;EAqC/B,QAAI5D,GAAG,GAAG,KAAKqO,OAAL,CAAa,SAAb,EAAwBzK,IAAxB,EAAV;EACA5D,IAAAA,GAAG,GAAGyG,IAAI,CAAC0K,KAAL,CAAWnR,GAAG,GAAG,GAAjB,CAAN;;EAEA,QAAIA,GAAG,GAAG,CAAV,EAAa;EACX,aAAOA,GAAG,GAAG,CAAb;EACD;;EAED,WAAOA,GAAG,GAAG,CAAb;EACD,GAjRa;EAkRd;EACA+gB,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB1c,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7BpB,QAAAA,KAAK,GAAGwF,MAAM,CAACxF,KAAD,CAAd;;EAEA,YAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;EAChBuE,UAAAA,OAAO,CAACC,IAAR,CAAa,oCAAb;EACA,iBAAO,IAAP;EACD;EACF;;EAED,UAAIxE,KAAK,GAAG,CAAZ,EAAe;EACbA,QAAAA,KAAK,IAAI,CAAT;EACD;;EAED,UAAIT,IAAI,GAAGS,KAAK,GAAG,IAAnB,CAhBuB;;EAkBvB,UAAIT,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAxBkC;;;EA2BnC,QAAI5D,GAAG,GAAGyG,IAAI,CAAC0K,KAAL,CAAW,KAAKvN,IAAL,KAAc,IAAzB,CAAV;;EAEA,QAAI5D,GAAG,IAAI,CAAX,EAAc;EACZA,MAAAA,GAAG,IAAI,CAAP;EACD;;EAED,WAAOA,GAAP;EACD;EArTa,CAAhB;EAuTA,IAAIghB,OAAO,GAAGb,SAAd;EAEA,IAAIc,SAAS,GAAGnd,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkBqP,OAAlB,EAA2BG,OAA3B,EAAoCe,OAApC,CAAhB;;EAEAC,SAAS,CAAC5U,YAAV,GAAyB4U,SAAS,CAAClV,WAAnC;EACAkV,SAAS,CAAChU,OAAV,GAAoBgU,SAAS,CAACjV,MAA9B;EACAiV,SAAS,CAACtH,OAAV,GAAoBsH,SAAS,CAAChV,MAA9B;EACAgV,SAAS,CAACrH,KAAV,GAAkBqH,SAAS,CAAC/U,IAA5B;EACA+U,SAAS,CAAC3O,MAAV,GAAmB2O,SAAS,CAAC/U,IAA7B;EACA+U,SAAS,CAACpK,GAAV,GAAgBoK,SAAS,CAAC1O,MAA1B;EACA0O,SAAS,CAAC7N,GAAV,GAAgB6N,SAAS,CAAC3O,MAA1B;EACA2O,SAAS,CAACjQ,IAAV,GAAiBiQ,SAAS,CAAC9U,GAA3B;;EAEA,IAAI+U,UAAU,GAAG,SAASA,UAAT,CAAoBC,KAApB,EAA2B;EAC1C;EACArd,EAAAA,MAAM,CAAC8F,IAAP,CAAYqX,SAAZ,EAAuBve,OAAvB,CAA+B,UAAU4C,CAAV,EAAa;EAC1C6b,IAAAA,KAAK,CAACpd,SAAN,CAAgBuB,CAAhB,IAAqB2b,SAAS,CAAC3b,CAAD,CAA9B;EACD,GAFD;EAGD,CALD;;EAOA,IAAI8b,KAAK,GAAGF,UAAZ;EAEA,IAAIG,YAAY,GAAG3d,GAAG,CAACC,UAAvB;;EAEA,IAAI2d,cAAc,GAAG,SAASA,cAAT,CAAwB9gB,KAAxB,EAA+BoD,IAA/B,EAAqC;EACxD,MAAIpD,KAAK,KAAK,CAAV,IAAe6gB,YAAY,CAACzd,IAAD,CAA/B,EAAuC;EACrC,WAAO,EAAP;EACD;;EAED,SAAO8K,cAAc,CAAClO,KAAD,CAArB;EACD,CAND;EAOA;;;EAGA,IAAI+gB,SAAS,GAAG,SAASA,SAAT,CAAmB7C,IAAnB,EAAyBvR,GAAzB,EAA8B;EAC5C;EACA,MAAIuR,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EAClB,QAAIiZ,KAAK,GAAGxZ,QAAQ,CAACye,IAAI,CAACle,KAAL,GAAa,EAAd,EAAkB,EAAlB,CAApB;EACAke,IAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,KAAa6V,KAAzB;EACAiF,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;EACD,GAJD,MAIO,IAAIke,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EACzB;EACA,QAAIghB,MAAM,GAAG/a,IAAI,CAAC0K,KAAL,CAAW1K,IAAI,CAACC,GAAL,CAASgY,IAAI,CAACle,KAAd,IAAuB,EAAlC,EAAsC,EAAtC,CAAb;;EAEAghB,IAAAA,MAAM,GAAG/a,IAAI,CAACC,GAAL,CAAS8a,MAAT,IAAmB,CAA5B;EACA9C,IAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,KAAa4d,MAAzB,CALyB;;EAOzB9C,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;EACAke,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;;EAEA,QAAIke,IAAI,CAACle,KAAL,KAAe,EAAnB,EAAuB;EACrBke,MAAAA,IAAI,CAACle,KAAL,GAAa,CAAb;EACD;EACF;;EAED,SAAOke,IAAP;EACD,CAtBD;;;EAyBA,IAAI+C,YAAY,GAAG,SAASA,YAAT,CAAsB/C,IAAtB,EAA4BvR,GAA5B,EAAiCiT,GAAjC,EAAsC;EACvD1B,EAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,EAAZ;EACA8a,EAAAA,IAAI,CAACle,KAAL,GAAa2M,GAAG,CAAC3M,KAAJ,EAAb;EACA,MAAIM,IAAI,GAAGqM,GAAG,CAACrM,IAAJ,EAAX;EACA4d,EAAAA,IAAI,CAAC5d,IAAL,GAAYA,IAAI,GAAG2F,IAAI,CAACC,GAAL,CAAS0Z,GAAT,CAAnB;;EAEA,SAAO1B,IAAI,CAAC5d,IAAL,GAAY,CAAnB,EAAsB;EACpB4d,IAAAA,IAAI,CAACle,KAAL,IAAc,CAAd;;EAEA,QAAIke,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EAClBke,MAAAA,IAAI,CAACle,KAAL,GAAa,EAAb;EACAke,MAAAA,IAAI,CAAC9a,IAAL,IAAa,CAAb;EACD;;EAED,QAAIgL,GAAG,GAAG0S,cAAc,CAAC5C,IAAI,CAACle,KAAN,EAAake,IAAI,CAAC9a,IAAlB,CAAxB;EACA8a,IAAAA,IAAI,CAAC5d,IAAL,IAAa8N,GAAb;EACD;;EAED,SAAO8P,IAAP;EACD,CAnBD;;;EAsBA,IAAIgD,UAAU,GAAG,SAASA,UAAT,CAAoBhD,IAApB,EAA0BvR,GAA1B,EAA+BiT,GAA/B,EAAoC;EACnD,MAAIxc,IAAI,GAAGuJ,GAAG,CAACvJ,IAAJ,EAAX;EACA,MAAIpD,KAAK,GAAG2M,GAAG,CAAC3M,KAAJ,EAAZ;EACA,MAAIoO,GAAG,GAAG0S,cAAc,CAAC9gB,KAAD,EAAQoD,IAAR,CAAxB;;EAEA,SAAOwc,GAAG,GAAGxR,GAAb,EAAkB;EAChBwR,IAAAA,GAAG,IAAIxR,GAAP;EACApO,IAAAA,KAAK,IAAI,CAAT;;EAEA,QAAIA,KAAK,IAAI,EAAb,EAAiB;EACfA,MAAAA,KAAK,IAAI,EAAT;EACAoD,MAAAA,IAAI,IAAI,CAAR;EACD;;EAEDgL,IAAAA,GAAG,GAAG0S,cAAc,CAAC9gB,KAAD,EAAQoD,IAAR,CAApB;EACD;;EAED8a,EAAAA,IAAI,CAACle,KAAL,GAAaA,KAAb;EACAke,EAAAA,IAAI,CAAC5d,IAAL,GAAYsf,GAAZ;EACA,SAAO1B,IAAP;EACD,CApBD;;EAsBA,IAAIiD,MAAM,GAAG;EACXhU,EAAAA,MAAM,EAAE4T,SADG;EAEXvQ,EAAAA,IAAI,EAAE0Q,UAFK;EAGXE,EAAAA,QAAQ,EAAEH;EAHC,CAAb;EAOA;EACA;EACA;;EAEA,IAAII,OAAO,GAAG,CAAC,aAAD,EAAgB,QAAhB,EAA0B,QAA1B,EAAoC,MAApC,EAA4C,MAA5C,EAAoD,OAApD,CAAd;EACA,IAAIC,IAAI,GAAG;EACT9V,EAAAA,MAAM,EAAE6V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CADC;EAET5O,EAAAA,MAAM,EAAE4V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAFC;EAGTiB,EAAAA,WAAW,EAAE+F,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAHJ;EAIT3O,EAAAA,IAAI,EAAE2V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAJG;EAKT/Z,EAAAA,IAAI,EAAE+gB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CALG;EAMTra,EAAAA,KAAK,EAAEqhB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CANE;EAOTjI,EAAAA,OAAO,EAAEiP,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAPA;EAQTha,EAAAA,MAAM,EAAEghB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CARC;EASTjX,EAAAA,IAAI,EAAEie,OATG;EAUT3F,EAAAA,MAAM,EAAE2F,OAVC;EAWT1F,EAAAA,OAAO,EAAE0F;EAXA,CAAX;EAaAC,IAAI,CAAC1V,IAAL,GAAY0V,IAAI,CAAC5V,IAAjB;EACA4V,IAAI,CAACjhB,MAAL,GAAcihB,IAAI,CAAChhB,IAAnB;EACAghB,IAAI,CAAClP,OAAL,GAAekP,IAAI,CAAChhB,IAApB;;EAEA,IAAIihB,aAAa,GAAG;EAClBne,EAAAA,IAAI,EAAE,IADY;EAElBgP,EAAAA,OAAO,EAAE,IAFS;EAGlB/R,EAAAA,MAAM,EAAE,IAHU;EAIlBL,EAAAA,KAAK,EAAE,IAJW;EAKlB4L,EAAAA,IAAI,EAAE,IALY;EAMlBD,EAAAA,GAAG,EAAE;EANa,CAApB;EAQA,IAAI6V,QAAQ,GAAG;EACbxhB,EAAAA,KAAK,EAAE,IADM;EAEboS,EAAAA,OAAO,EAAE,IAFI;EAGb/R,EAAAA,MAAM,EAAE,IAHK;EAIb+C,EAAAA,IAAI,EAAE;EAJO,CAAf;;EAOA,IAAIqe,YAAY,GAAG,SAASf,UAAT,CAAoBgB,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAACne,SAAV,CAAoB+L,GAApB,GAA0B,UAAU9P,GAAV,EAAeuM,IAAf,EAAqB;EAC7C,QAAIrG,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,QAAI,CAACoG,IAAD,IAASvM,GAAG,KAAK,CAArB,EAAwB;EACtB,aAAOkG,CAAP,CADsB;EAEvB;;EAED,QAAIiH,GAAG,GAAG,KAAKhH,KAAL,EAAV;EACAoG,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CAR6C;;EAU7C,QAAIF,YAAY,CAACE,IAAD,CAAhB,EAAwB;EACtBrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACE,IAAD,CAAZ,GAAqBvM,GAAhC;EACD,KAFD,MAEO,IAAIuM,IAAI,KAAK,MAAb,EAAqB;EAC1BrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAb,IAAoBnM,GAAG,GAAG,CAA1B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;EAClDrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAAC7L,KAAb,IAAsBR,GAAG,GAAG,CAA5B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,QAAb,EAAuB;EAC5BrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAAC7L,KAAb,IAAsBR,GAAG,GAAG,CAA5B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,aAAb,EAA4B;EACjCrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACJ,MAAb,GAAsB,EAAtB,GAA2BjM,GAAtC;EACD,KApB4C;;;EAuB7C,QAAI0e,IAAI,GAAG,EAAX;;EAEA,QAAIoD,IAAI,CAACvV,IAAD,CAAR,EAAgB;EACduV,MAAAA,IAAI,CAACvV,IAAD,CAAJ,CAAW7J,OAAX,CAAmB,UAAUgY,CAAV,EAAa;EAC9BgE,QAAAA,IAAI,CAAChE,CAAD,CAAJ,GAAUvN,GAAG,CAACuN,CAAD,CAAH,EAAV;EACD,OAFD;EAGD;;EAED,QAAIqH,aAAa,CAACxV,IAAD,CAAjB,EAAyB;EACvB,UAAII,IAAI,GAAGQ,GAAG,CAAC3C,QAAJ,GAAenC,OAAf,CAAuB/B,MAAvB,GAAgCJ,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAhE;EACAJ,MAAAA,CAAC,CAACF,KAAF,IAAW2G,IAAI,GAAG,IAAP,GAAc,IAAzB;EACD,KAlC4C;;;EAqC7C,QAAIJ,IAAI,KAAK,OAAb,EAAsB;EACpBmS,MAAAA,IAAI,CAACle,KAAL,GAAa2M,GAAG,CAAC3M,KAAJ,KAAcR,GAA3B,CADoB;;EAGpB0e,MAAAA,IAAI,GAAGiD,MAAM,CAAChU,MAAP,CAAc+Q,IAAd,EAAoBvR,GAApB,CAAP;EACD,KAzC4C;;;EA4C7C,QAAIZ,IAAI,KAAK,MAAb,EAAqB;EACnB,UAAI6T,GAAG,GAAGjT,GAAG,CAACrM,IAAJ,KAAad,GAAG,GAAG,CAA7B;;EAEA,UAAIogB,GAAG,IAAI,EAAP,IAAaA,GAAG,GAAG,CAAvB,EAA0B;EACxB1B,QAAAA,IAAI,CAAC5d,IAAL,GAAYsf,GAAZ;EACD;EACF,KAND;EAAA,SAOK,IAAI7T,IAAI,KAAK,MAAb,EAAqB;EACtB,YAAIvM,GAAG,GAAG,CAAV,EAAa;EACX0e,UAAAA,IAAI,GAAGiD,MAAM,CAACC,QAAP,CAAgBlD,IAAhB,EAAsBvR,GAAtB,EAA2BnN,GAA3B,CAAP;EACD,SAFD,MAEO;EACL;EACA,cAAImiB,IAAI,GAAGhV,GAAG,CAACrM,IAAJ,KAAad,GAAxB,CAFK;;;EAKL0e,UAAAA,IAAI,GAAGiD,MAAM,CAAC3Q,IAAP,CAAY0N,IAAZ,EAAkBvR,GAAlB,EAAuBgV,IAAvB,CAAP;EACD,SATqB;;;EAYtB,YAAIniB,GAAG,KAAK,CAAR,IAAamN,GAAG,CAACsN,MAAJ,CAAWvU,CAAX,EAAc,KAAd,CAAjB,EAAuC;EACrCwY,UAAAA,IAAI,CAAC5d,IAAL,GAAYqM,GAAG,CAACrM,IAAJ,KAAad,GAAzB;EACD;EACF,OAfE;EAAA,WAgBE,IAAIuM,IAAI,KAAK,MAAT,IAAmBrG,CAAC,CAACtC,IAAF,OAAauJ,GAAG,CAACvJ,IAAJ,EAApC,EAAgD;EACjDsC,UAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACD,IAAxB;EACD,SAFE;EAAA,aAGE,IAAIG,IAAI,KAAK,QAAb,EAAuB;EACxBmS,YAAAA,IAAI,CAAC9a,IAAL,GAAYsC,CAAC,CAACtC,IAAF,KAAW,EAAvB;EACD,WAFE,MAEI,IAAI2I,IAAI,KAAK,SAAb,EAAwB;EAC7BmS,YAAAA,IAAI,CAAC9a,IAAL,GAAYsC,CAAC,CAACtC,IAAF,KAAW,GAAvB;EACD,WA1EsC;;;EA6E7C,QAAIoe,QAAQ,CAACzV,IAAD,CAAZ,EAAoB;EAClB,UAAIqC,GAAG,GAAGF,cAAc,CAACgQ,IAAI,CAACle,KAAN,CAAxB;EACAke,MAAAA,IAAI,CAAC5d,IAAL,GAAYqM,GAAG,CAACrM,IAAJ,EAAZ;;EAEA,UAAI4d,IAAI,CAAC5d,IAAL,GAAY8N,GAAhB,EAAqB;EACnB8P,QAAAA,IAAI,CAAC5d,IAAL,GAAY8N,GAAZ;EACD;EACF;;EAEDvB,IAAAA,MAAM,CAACnH,CAAD,EAAIwY,IAAJ,CAAN;EACA,WAAOxY,CAAP;EACD,GAxFD,CADgD;;;EA4FhDgc,EAAAA,SAAS,CAACne,SAAV,CAAoBiM,QAApB,GAA+B,UAAUhQ,GAAV,EAAeuM,IAAf,EAAqB;EAClD,QAAIrG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA,WAAOD,CAAC,CAAC4J,GAAF,CAAM9P,GAAG,GAAG,CAAC,CAAb,EAAgBuM,IAAhB,CAAP;EACD,GAHD,CA5FgD;;;EAkGhD2V,EAAAA,SAAS,CAACne,SAAV,CAAoB4c,KAApB,GAA4BuB,SAAS,CAACne,SAAV,CAAoBiM,QAAhD;EACAkS,EAAAA,SAAS,CAACne,SAAV,CAAoBqe,IAApB,GAA2BF,SAAS,CAACne,SAAV,CAAoB+L,GAA/C;EACD,CApGD;;EAsGA,IAAIA,GAAG,GAAGmS,YAAV;;EAGA,IAAII,KAAK,GAAG;EACVtW,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB7F,CAArB,EAAwB;EACnC,WAAOA,CAAC,CAACF,KAAT;EACD,GAHS;EAIVgG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9F,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0ChG,CAAC,CAAC+F,MAAF,EAA1C,EAAsD/F,CAAC,CAAC8F,MAAF,EAAtD,EAAkEjH,IAAlE,CAAuE,GAAvE,CAAP;EACD,GANS;EAOVkH,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0ChG,CAAC,CAAC+F,MAAF,EAA1C,EAAsDlH,IAAtD,CAA2D,GAA3D,CAAP;EACD,GATS;EAUVmH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0CnH,IAA1C,CAA+C,GAA/C,CAAP;EACD,GAZS;EAaVoH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCiE,IAAhC,CAAqC,GAArC,CAAP;EACD,GAfS;EAgBVqH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclG,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAACkG,IAAF,EAAX,EAAqBrH,IAArB,CAA0B,GAA1B,CAAP;EACD,GAlBS;EAmBVvE,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsBuE,IAAtB,CAA2B,GAA3B,CAAP;EACD,GArBS;EAsBV6N,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC0M,OAAF,EAAX,EAAwB7N,IAAxB,CAA6B,GAA7B,CAAP;EACD,GAxBS;EAyBVnB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD;EA3BS,CAAZ;EA6BAye,KAAK,CAACvhB,IAAN,GAAauhB,KAAK,CAAClW,GAAnB;;EAEA,IAAImW,YAAY,GAAG,SAASpB,UAAT,CAAoBgB,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAACne,SAAV,CAAoB0W,MAApB,GAA6B,UAAUtB,CAAV,EAAa5M,IAAb,EAAmB;EAC9C,QAAIkK,CAAC,GAAG,IAAR;;EAEA,QAAI,CAAClK,IAAL,EAAW;EACT,aAAO,IAAP;EACD;;EAED,QAAI,OAAO4M,CAAP,KAAa,QAAb,IAAyB,OAAOA,CAAP,KAAa,QAA1C,EAAoD;EAClDA,MAAAA,CAAC,GAAG,IAAI+I,SAAJ,CAAc/I,CAAd,EAAiB,KAAK3O,QAAL,CAAcR,IAA/B,CAAJ;EACD,KAT6C;;;EAY9CuC,IAAAA,IAAI,GAAGA,IAAI,CAAC9G,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;;EAEA,QAAI4c,KAAK,CAAC9V,IAAD,CAAT,EAAiB;EACf,aAAO8V,KAAK,CAAC9V,IAAD,CAAL,CAAYkK,CAAZ,MAAmB4L,KAAK,CAAC9V,IAAD,CAAL,CAAY4M,CAAZ,CAA1B;EACD;;EAED,WAAO,IAAP;EACD,GAnBD;EAoBD,CArBD;;EAuBA,IAAIoJ,IAAI,GAAGD,YAAX;;EAEA,IAAIE,YAAY,GAAG,SAAStB,UAAT,CAAoBgB,SAApB,EAA+B;EAChD,MAAIjgB,OAAO,GAAG;EACZoX,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxX,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KAVW;EAWZoT,IAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBvX,CAAlB,EAAqB;EAC7BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KApBW;EAqBZyc,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5gB,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,KAAeA,KAAtB;EACD,KA9BW;EA+BZ0c,IAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB5a,KAAnB,EAA0BC,GAA1B,EAA+B;EACxC,UAAI4a,WAAW,GAAGje,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAtF;EACAoD,MAAAA,KAAK,GAAGpE,GAAG,CAACuC,OAAJ,CAAY6B,KAAZ,EAAmB,IAAnB,CAAR;EACAC,MAAAA,GAAG,GAAGrE,GAAG,CAACuC,OAAJ,CAAY8B,GAAZ,EAAiB,IAAjB,CAAN;EACA,UAAI6a,UAAU,GAAGlf,GAAG,CAACmC,QAAJ,CAAaiC,KAAb,CAAjB;;EAEA,UAAI8a,UAAU,KAAK,IAAnB,EAAyB;EACvB,eAAO,IAAP;EACD;;EAED,UAAIC,QAAQ,GAAGnf,GAAG,CAACmC,QAAJ,CAAakC,GAAb,CAAf;;EAEA,UAAI8a,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAO,IAAP;EACD;;EAED,UAAIF,WAAJ,EAAiB;EACf,eAAO,KAAKD,SAAL,CAAe5a,KAAf,EAAsBC,GAAtB,KAA8B,KAAK0a,OAAL,CAAa3a,KAAb,CAA9B,IAAqD,KAAK2a,OAAL,CAAa1a,GAAb,CAA5D;EACD;;EAED,aAAO6a,UAAU,GAAG,KAAK5c,KAAlB,IAA2B,KAAKA,KAAL,GAAa6c,QAA/C;EACD;EApDW,GAAd,CADgD;;EAwDhD/e,EAAAA,MAAM,CAAC8F,IAAP,CAAY3H,OAAZ,EAAqBS,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC4c,IAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBrD,OAAO,CAACqD,CAAD,CAAhC;EACD,GAFD;EAGD,CA3DD;;EA6DA,IAAIwd,OAAO,GAAGN,YAAd;;EAEA,IAAIO,YAAY,GAAG,SAAS7B,UAAT,CAAoBgB,SAApB,EAA+B;EAChD,MAAIjgB,OAAO,GAAG;EACZ8L,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrE,IAAd,EAAoB;EACxB;EACA,UAAIhG,GAAG,CAACY,QAAJ,CAAaoF,IAAI,CAACsH,IAAlB,CAAJ,EAA6B;EAC3BA,QAAAA,IAAI,CAAC5K,GAAL,CAASsD,IAAI,CAACsH,IAAd;EACD,OAJuB;;;EAOxB,UAAItN,GAAG,CAACY,QAAJ,CAAaoF,IAAI,CAACiE,MAAlB,CAAJ,EAA+B;EAC7BA,QAAAA,MAAM,CAACvH,GAAP,CAAWsD,IAAI,CAACiE,MAAhB;EACD;EACF;EAXW,GAAd,CADgD;;EAehD7J,EAAAA,MAAM,CAAC8F,IAAP,CAAY3H,OAAZ,EAAqBS,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC4c,IAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBrD,OAAO,CAACqD,CAAD,CAAhC;EACD,GAFD;EAGD,CAlBD;;EAoBA,IAAIyI,IAAI,GAAGgV,YAAX;EAEA,IAAIta,SAAS,GAAGwB,MAAhB;;EAEA,IAAIiY,SAAS,GAAG,SAASA,SAAT,CAAmB7E,OAAnB,EAA4B1U,EAA5B,EAAgC;EAC9C,MAAI0G,OAAO,GAAG3K,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAD8C;;EAG9C,OAAKsB,KAAL,GAAa,IAAb,CAH8C;;EAK9C,OAAK2C,EAAL,GAAUkD,IAAI,CAAClD,EAAD,EAAKF,SAAL,CAAd,CAL8C;;EAO9C,OAAK2E,MAAL,GAAciC,OAAO,CAACjC,MAAR,IAAkB,IAAhC,CAP8C;;EAS9C,OAAKkC,OAAL,GAAeD,OAAO,CAAC0E,GAAR,IAAe1E,OAAO,CAACC,OAAtC,CAT8C;;EAW9C,OAAKyM,UAAL,GAAkB,CAAlB,CAX8C;;EAa9C,MAAI1M,OAAO,CAAC6O,SAAR,KAAsBtZ,SAA1B,EAAqC;EACnC,SAAKmX,UAAL,GAAkB1M,OAAO,CAAC6O,SAA1B;EACD,GAf6C;;;EAkB9C,OAAK3O,MAAL,GAAc,EAAd;;EAEA,MAAIF,OAAO,CAACL,KAAR,KAAkBpK,SAAtB,EAAiC;EAC/B,SAAK2K,MAAL,GAAcF,OAAO,CAACL,KAAtB;EACD,GAtB6C;;;EAyB9ClL,EAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;EAC/B;EACAC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,UAAI3c,MAAM,GAAG8C,KAAK,CAAC,IAAD,CAAlB,CADkB;;EAGlB,UAAIlB,IAAI,GAAG,IAAID,IAAJ,CAAS,KAAKjC,KAAd,EAAqBmC,iBAArB,MAA4C,CAAvD,CAHkB;;EAKlB,UAAIC,KAAK,GAAGF,IAAI,GAAG5B,MAAM,GAAG,EAA5B,CALkB;;EAOlB8B,MAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CAPkB;EAQlB;;EAEA,UAAIpC,KAAK,GAAG,KAAKA,KAAL,GAAaoC,KAAzB;EACA,UAAIvG,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAT,CAAR;EACA,aAAOnE,CAAP;EACD;EAf8B,GAAjC,EAzB8C;;EA2C9CiC,EAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACvCC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,aAAOxa,SAAP;EACD,KAHsC;EAIvCrC,IAAAA,GAAG,EAAE,SAASA,GAAT,CAAasC,GAAb,EAAkB;EACrBD,MAAAA,SAAS,GAAGC,GAAZ;EACA,aAAOA,GAAP;EACD;EAPsC,GAAzC,EA3C8C;;EAqD9C,MAAI5C,GAAG,GAAGzB,KAAK,CAAC,IAAD,EAAOgZ,OAAP,EAAgB1U,EAAhB,CAAf;EACA,OAAK3C,KAAL,GAAaF,GAAG,CAACE,KAAjB;EACD,CAvDD;;;EA0DAlC,MAAM,CAAC8F,IAAP,CAAY0U,SAAZ,EAAuB5b,OAAvB,CAA+B,UAAU4C,CAAV,EAAa;EAC1C4c,EAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBgZ,SAAS,CAAChZ,CAAD,CAAlC;EACD,CAFD;;EAIA4c,SAAS,CAACne,SAAV,CAAoBoC,KAApB,GAA4B,YAAY;EACtC,SAAO,IAAI+b,SAAJ,CAAc,KAAKlc,KAAnB,EAA0B,KAAK2C,EAA/B,EAAmC;EACxCyE,IAAAA,MAAM,EAAE,KAAKA,MAD2B;EAExC8Q,IAAAA,SAAS,EAAE,KAAKnC,UAFwB;EAGxC/M,IAAAA,KAAK,EAAE,KAAKO;EAH4B,GAAnC,CAAP;EAKD,CAND;;;EASA2S,SAAS,CAACne,SAAV,CAAoBmf,WAApB,GAAkC,YAAY;EAC5C,SAAO,IAAIjb,IAAJ,CAAS,KAAKjC,KAAd,CAAP;EACD,CAFD;;;EAKAob,KAAK,CAACc,SAAD,CAAL;EACApS,GAAG,CAACoS,SAAD,CAAH;EACAK,IAAI,CAACL,SAAD,CAAJ;EACAY,OAAO,CAACZ,SAAD,CAAP;EACAnU,IAAI,CAACmU,SAAD,CAAJ;EACA,IAAIiB,SAAS,GAAGjB,SAAhB;;EAEA,IAAIkB,QAAQ,GAAG,SAASA,QAAT,CAAkB3M,CAAlB,EAAqB0C,CAArB,EAAwB;EACrC,MAAIrR,KAAK,GAAG,IAAIqb,SAAJ,CAAc,IAAd,CAAZ;EACA,MAAIpb,GAAG,GAAG,IAAIob,SAAJ,CAAc,IAAd,CAAV;EACArb,EAAAA,KAAK,GAAGA,KAAK,CAAC5G,IAAN,CAAWuV,CAAX,CAAR,CAHqC;;EAKrC,MAAI0C,CAAJ,EAAO;EACLpR,IAAAA,GAAG,GAAGA,GAAG,CAAC7G,IAAJ,CAASiY,CAAT,CAAN;EACD,GAFD,MAEO;EACLpR,IAAAA,GAAG,GAAGD,KAAK,CAACgI,GAAN,CAAU,EAAV,EAAc,SAAd,CAAN;EACD;;EAED,MAAIuT,SAAS,GAAGvb,KAAK,CAACoE,IAAN,EAAhB;EACA,MAAIoX,OAAO,GAAGvb,GAAG,CAACmE,IAAJ,EAAd;EACA,MAAIqX,GAAG,GAAGzf,MAAM,CAAC8F,IAAP,CAAY9B,KAAK,CAACW,SAAlB,EAA6B+a,MAA7B,CAAoC,UAAU7a,EAAV,EAAc;EAC1D,QAAIA,EAAE,CAACwL,OAAH,CAAW,GAAX,MAAoB,CAAC,CAAzB,EAA4B;EAC1B,aAAO,KAAP;EACD;;EAED,QAAIxU,CAAC,GAAG,IAAIwjB,SAAJ,CAAc,IAAd,EAAoBxa,EAApB,CAAR;EACA,QAAIuD,IAAI,GAAGvM,CAAC,CAACuM,IAAF,EAAX,CAN0D;;EAQ1D,QAAIA,IAAI,IAAImX,SAAR,IAAqBnX,IAAI,IAAIoX,OAAjC,EAA0C;EACxC;EACA,UAAIpX,IAAI,KAAKmX,SAAT,IAAsB1jB,CAAC,CAACsM,MAAF,KAAanE,KAAK,CAACmE,MAAN,EAAvC,EAAuD;EACrD,eAAO,KAAP;EACD;;EAED,UAAIC,IAAI,KAAKoX,OAAT,IAAoB3jB,CAAC,CAACsM,MAAF,KAAalE,GAAG,CAACkE,MAAJ,EAArC,EAAmD;EACjD,eAAO,KAAP;EACD;;EAED,aAAO,IAAP;EACD;;EAED,WAAO,KAAP;EACD,GAtBS,CAAV;EAuBA,SAAOsX,GAAP;EACD,CArCD;;EAuCA,IAAIE,UAAU,GAAGL,QAAjB;EAEA,IAAIM,QAAQ,GAAG,OAAf;;EAEA,IAAIC,MAAM,GAAG,SAAS3J,IAAT,CAAc3V,KAAd,EAAqBsE,EAArB,EAAyB0G,OAAzB,EAAkC;EAC7C,SAAO,IAAI8T,SAAJ,CAAc9e,KAAd,EAAqBsE,EAArB,EAAyB0G,OAAzB,CAAP;EACD,CAFD;;;EAKA,IAAIuU,QAAQ,GAAG,SAASA,QAAT,CAAkB1d,CAAlB,EAAqB;EAClC,MAAI8I,KAAK,GAAG9I,CAAC,CAACqJ,MAAF,IAAY,EAAxB;EACAzL,EAAAA,MAAM,CAAC8F,IAAP,CAAYoF,KAAZ,EAAmBtM,OAAnB,CAA2B,UAAU4C,CAAV,EAAa;EACtCY,IAAAA,CAAC,GAAGA,CAAC,CAACZ,CAAD,CAAD,CAAK0J,KAAK,CAAC1J,CAAD,CAAV,CAAJ;EACD,GAFD;EAGA,SAAOY,CAAP;EACD,CAND;;;EASAyd,MAAM,CAACjU,GAAP,GAAa,UAAU/G,EAAV,EAAc0G,OAAd,EAAuB;EAClC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAP;EACD,CAJD;;EAMAyd,MAAM,CAAC3U,KAAP,GAAe,UAAUrG,EAAV,EAAc0G,OAAd,EAAuB;EACpC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAAC9T,QAAP,GAAkB,UAAUlH,EAAV,EAAc0G,OAAd,EAAuB;EACvC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,KAAT,EAAgBzB,OAAhB,CAAwB,KAAxB,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAAC5T,SAAP,GAAmB,UAAUpH,EAAV,EAAc0G,OAAd,EAAuB;EACxC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,KAAd,EAAqB3B,OAArB,CAA6B,KAA7B,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAACE,MAAP,GAAgB,UAAUnb,GAAV,EAAe;EAC7B5E,EAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAU4C,CAAV,EAAa;EACpC6d,IAAAA,SAAS,CAACpf,SAAV,CAAoBuB,CAApB,IAAyBoD,GAAG,CAACpD,CAAD,CAA5B;EACD,GAFD;EAGA,SAAO,IAAP;EACD,CALD;;;EAQAqe,MAAM,CAACP,QAAP,GAAkBK,UAAlB;EACAE,MAAM,CAACG,OAAP,GAAiBJ,QAAjB;;EAEAC,MAAM,CAACI,MAAP,GAAgBJ,MAAM,CAACE,MAAvB;EACA,IAAIG,GAAG,GAAGL,MAAV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvhIA;EACA;;EAGA,IAAMM,OAAO,GAAG,UAAhB;EACA,IAAMC,IAAI,GAAG,OAAb;EACA,IAAMC,MAAM,GAAG,SAAf;EACA,IAAMC,MAAM,GAAG,SAAf;EACA,IAAMC,GAAG,GAAG,YAAZ;EACA,IAAMC,GAAG,GAAG,UAAZ;EAEA,IAAMC,QAAQ,GAAG;;EAEf,yBAAuBJ,MAAM,GAAG,QAFjB;EAGfK,EAAAA,GAAG,EAAEL,MAAM,GAAG,QAHC;EAIf,kBAAgBA,MAAM,GAAG,QAJV;EAKf,kBAAgBA,MAAM,GAAG,QALV;EAMf,uBAAqBA,MAAM,GAAG,QANf;EAOf,gBAAcA,MAAM,GAAG,QAPR;EAQfM,EAAAA,OAAO,EAAEN,MAAM,GAAG,QARH;EASf,2BAAyBA,MAAM,GAAG,QATnB;EAUfO,EAAAA,GAAG,EAAEP,MAAM,GAAG,QAVC;EAWf,kCAAgCA,MAAM,GAAG,QAX1B;EAYfQ,EAAAA,IAAI,EAAER,MAAM,GAAG,QAZA;EAaf,oBAAkBA,MAAM,GAAG,QAbZ;EAcf,2BAAyBA,MAAM,GAAG,MAdnB;EAefS,EAAAA,GAAG,EAAET,MAAM,GAAG,MAfC;EAgBf,kCAAgCA,MAAM,GAAG,MAhB1B;EAiBfU,EAAAA,IAAI,EAAEV,MAAM,GAAG,MAjBA;EAkBf,yBAAuBA,MAAM,GAAG,MAlBjB;EAmBf,2BAAyBA,MAAM,GAAG,QAnBnB;;EAqBf,kCAAgCA,MAAM,GAAG,QArB1B;;EAuBf,oBAAkBA,MAAM,GAAG,QAvBZ;EAwBf,0BAAwBA,MAAM,GAAG,UAxBlB;EAyBfW,EAAAA,GAAG,EAAEX,MAAM,GAAG,UAzBC;EA0Bf,kBAAgBA,MAAM,GAAG,UA1BV;;EA6BfY,EAAAA,GAAG,EAAEX,MAAM,GAAG,UA7BC;EA8BfY,EAAAA,GAAG,EAAEZ,MAAM,GAAG,UA9BC;EA+Bf,6BAA2BA,MAAM,GAAG,UA/BrB;EAgCfa,EAAAA,GAAG,EAAEb,MAAM,GAAG,UAhCC;EAiCf,sBAAoBA,MAAM,GAAG,SAjCd;;EAmCf,uBAAqBA,MAAM,GAAG,SAnCf;EAoCf,yBAAuBA,MAAM,GAAG,SApCjB;EAqCf,yBAAuBA,MAAM,GAAG,UArCjB;;EAuCf,0BAAwBA,MAAM,GAAG,UAvClB;EAwCf,gCAA8BA,MAAM,GAAG,cAxCxB;EAyCfc,EAAAA,IAAI,EAAEd,MAAM,GAAG,cAzCA;EA0Cf,qBAAmBA,MAAM,GAAG,cA1Cb;EA2Cf,mBAAiBA,MAAM,GAAG,cA3CX;EA4Cf,+BAA6BA,MAAM,GAAG,OA5CvB;;EA8Cf,yBAAuBA,MAAM,GAAG,OA9CjB;EA+Cf,uBAAqBA,MAAM,GAAG,OA/Cf;EAiDf,sCAAoCC,GAAG,GAAG,UAjD3B;EAkDfc,EAAAA,IAAI,EAAEd,GAAG,GAAG,UAlDG;EAmDf,sCAAoCA,GAAG,GAAG,UAnD3B;EAoDfe,EAAAA,IAAI,EAAEf,GAAG,GAAG,UApDG;EAqDf,uBAAqBA,GAAG,GAAG,UArDZ;EAsDf,sCAAoCA,GAAG,GAAG,UAtD3B;EAuDfgB,EAAAA,IAAI,EAAEhB,GAAG,GAAG,UAvDG;EAwDf,sCAAoCA,GAAG,GAAG,UAxD3B;EAyDfiB,EAAAA,IAAI,EAAEjB,GAAG,GAAG,UAzDG;EA0Df,oBAAkBA,GAAG,GAAG,UA1DT;EA2Df,sCAAoCA,GAAG,GAAG,OA3D3B;EA4DfkB,EAAAA,IAAI,EAAElB,GAAG,GAAG,OA5DG;EA6Df,sCAAoCA,GAAG,GAAG,OA7D3B;EA8DfmB,EAAAA,IAAI,EAAEnB,GAAG,GAAG,OA9DG;EA+Df,oBAAkBA,GAAG,GAAG,OA/DT;EAgEf,8CAA4CA,GAAG,GAAG,OAhEnC;EAiEfoB,EAAAA,KAAK,EAAEpB,GAAG,GAAG,OAjEE;EAkEf,4BAA0BA,GAAG,GAAG,OAlEjB;EAmEf,6BAA2BA,GAAG,GAAG,WAnElB;EAoEfqB,EAAAA,IAAI,EAAErB,GAAG,GAAG,WApEG;EAqEf,6BAA2BA,GAAG,GAAG,WArElB;EAsEfsB,EAAAA,IAAI,EAAEtB,GAAG,GAAG,WAtEG;EAuEf,2BAAyBF,MAAM,GAAG,QAvEnB;EAwEfyB,EAAAA,GAAG,EAAEzB,MAAM,GAAG,QAxEC;EAyEf0B,EAAAA,OAAO,EAAE1B,MAAM,GAAG,QAzEH;;EA4Ef,2BAAyBF,OAAO,GAAG,SA5EpB;EA6Ef,kBAAgBA,OAAO,GAAG,SA7EX;EA8Ef6B,EAAAA,GAAG,EAAE7B,OAAO,GAAG,QA9EA;EA+Ef,2BAAyBA,OAAO,GAAG,SA/EpB;EAgFf8B,EAAAA,GAAG,EAAE9B,OAAO,GAAG,QAhFA;EAiFf,4BAA0BA,OAAO,GAAG,QAjFrB;EAkFf,mBAAiBA,OAAO,GAAG,QAlFZ;EAmFf+B,EAAAA,GAAG,EAAE/B,OAAO,GAAG,QAnFA;EAoFf,4BAA0BA,OAAO,GAAG,QApFrB;EAqFfgC,EAAAA,GAAG,EAAEhC,OAAO,GAAG,QArFA;EAsFf,4BAA0BA,OAAO,GAAG,SAtFrB;EAuFf,mBAAiBA,OAAO,GAAG,SAvFZ;EAwFfiC,EAAAA,GAAG,EAAEhC,IAAI,GAAG,SAxFG;EAyFf,4BAA0BD,OAAO,GAAG,SAzFrB;EA0FfkC,EAAAA,GAAG,EAAElC,OAAO,GAAG,SA1FA;EA2Ff,2BAAyBA,OAAO,GAAG,UA3FpB;EA4Ff,kBAAgBA,OAAO,GAAG,UA5FX;EA6FfmC,EAAAA,GAAG,EAAEnC,OAAO,GAAG,UA7FA;EA8Ff,2BAAyBA,OAAO,GAAG,UA9FpB;EA+FfoC,EAAAA,GAAG,EAAEpC,OAAO,GAAG,UA/FA;EAgGf,kBAAgBA,OAAO,GAAG,aAhGX;EAiGf,2BAAyBA,OAAO,GAAG,aAjGpB;EAkGfqC,EAAAA,GAAG,EAAErC,OAAO,GAAG,aAlGA;EAmGf,2BAAyBA,OAAO,GAAG,aAnGpB;EAoGfsC,EAAAA,GAAG,EAAEtC,OAAO,GAAG,aApGA;EAqGf,2BAAyBA,OAAO,GAAG,WArGpB;EAsGf,kBAAgBA,OAAO,GAAG,WAtGX;EAuGfuC,EAAAA,IAAI,EAAEvC,OAAO,GAAG,WAvGD;EAwGf,2BAAyBA,OAAO,GAAG,WAxGpB;EAyGfwC,EAAAA,IAAI,EAAExC,OAAO,GAAG,WAzGD;EA0Gf,4BAA0BK,GAAG,GAAG,UA1GjB;EA2Gf,mBAAiBA,GAAG,GAAG,UA3GR;EA4GfoC,EAAAA,GAAG,EAAEpC,GAAG,GAAG,UA5GI;EA6Gf,mBAAiBA,GAAG,GAAG,UA7GR;EA8Gf,iBAAeA,GAAG,GAAG,UA9GN;EA+Gf,gCAA8BL,OAAO,GAAG,UA/GzB;EAgHf,uBAAqBA,OAAO,GAAG,UAhHhB;EAiHf0C,EAAAA,GAAG,EAAE1C,OAAO,GAAG,UAjHA;EAkHf,gCAA8BA,OAAO,GAAG,UAlHzB;EAmHf2C,EAAAA,GAAG,EAAE3C,OAAO,GAAG,UAnHA;EAoHf,iBAAeA,OAAO,GAAG,WApHV;EAqHf4C,EAAAA,GAAG,EAAE5C,OAAO,GAAG,WArHA;EAsHf6C,EAAAA,QAAQ,EAAE7C,OAAO,GAAG,WAtHL;EAuHf8C,EAAAA,QAAQ,EAAE9C,OAAO,GAAG,WAvHL;EAwHf,oBAAkBA,OAAO,GAAG,WAxHb;EAyHf,oBAAkBA,OAAO,GAAG,cAzHb;;EA2Hf,sBAAoBA,OAAO,GAAG,cA3Hf;EA4Hf,iBAAeA,OAAO,GAAG,QA5HV;EA6Hf+C,EAAAA,GAAG,EAAE/C,OAAO,GAAG,QA7HA;EA8Hf,oBAAkBA,OAAO,GAAG,QA9Hb;EA+Hf,iCAA+B,oBA/HhB;EAgIfgD,EAAAA,IAAI,EAAE,oBAhIS;EAiIf,+BAA6B,oBAjId;EAkIfC,EAAAA,KAAK,EAAE,oBAlIQ;EAmIf,8BAA4BjD,OAAO,GAAG,SAnIvB;EAoIf,qBAAmBA,OAAO,GAAG,SApId;EAqIfkD,EAAAA,GAAG,EAAElD,OAAO,GAAG,SArIA;EAsIf,oBAAkBA,OAAO,GAAG,SAtIb;EAuIf,mBAAiBA,OAAO,GAAG,UAvIZ;EAwIfmD,EAAAA,GAAG,EAAEnD,OAAO,GAAG,UAxIA;EAyIf,0BAAwBA,OAAO,GAAG,UAzInB;EA0IfoD,EAAAA,IAAI,EAAEpD,OAAO,GAAG,UA1ID;EA2If,wBAAsBA,OAAO,GAAG,QA3IjB;EA4If,eAAaA,OAAO,GAAG,QA5IR;EA6If,wBAAsBA,OAAO,GAAG,QA7IjB;EA8If,gBAAcA,OAAO,GAAG,QA9IT;EA+If,kBAAgBA,OAAO,GAAG,QA/IX;;EAiJf,mBAAiBA,OAAO,GAAG,QAjJZ;EAkJf,mBAAiBA,OAAO,GAAG,QAlJZ;EAmJfqD,EAAAA,GAAG,EAAErD,OAAO,GAAG,QAnJA;EAoJf,oBAAkBA,OAAO,GAAG,QApJb;EAqJf,eAAaA,OAAO,GAAG,UArJR;;EAuJf,eAAaA,OAAO,GAAG,MAvJR;;EAyJf,yBAAuBA,OAAO,GAAG,cAzJlB;EA0Jf,gBAAcA,OAAO,GAAG,cA1JT;EA2JfsD,EAAAA,IAAI,EAAEtD,OAAO,GAAG,cA3JD;EA4Jf,uBAAqBA,OAAO,GAAG,cA5JhB;EA6JfuD,EAAAA,IAAI,EAAEvD,OAAO,GAAG,cA7JD;EA8Jf,kBAAgBA,OAAO,GAAG,YA9JX;EA+JfwD,EAAAA,GAAG,EAAExD,OAAO,GAAG,YA/JA;;EAkKfyD,EAAAA,GAAG,EAAExD,IAAI,GAAG,WAlKG;EAmKf,0BAAwBA,IAAI,GAAG,SAnKhB;EAoKf,iBAAeA,IAAI,GAAG,SApKP;EAqKf,eAAaA,IAAI,GAAG,SArKL;EAsKf,wBAAsBA,IAAI,GAAG,QAtKd;EAuKf,eAAaA,IAAI,GAAG,QAvKL;EAwKfyD,EAAAA,IAAI,EAAEzD,IAAI,GAAG,QAxKE;EAyKf,wBAAsBA,IAAI,GAAG,QAzKd;EA0Kf0D,EAAAA,IAAI,EAAE1D,IAAI,GAAG,QA1KE;EA2Kf2D,EAAAA,OAAO,EAAE3D,IAAI,GAAG,QA3KD;EA4Kf,4BAA0BA,IAAI,GAAG,SA5KlB;EA6Kf,mBAAiBA,IAAI,GAAG,SA7KT;EA8Kf4D,EAAAA,GAAG,EAAE5D,IAAI,GAAG,SA9KG;EA+Kf,yBAAuBA,IAAI,GAAG,SA/Kf;EAgLf,iBAAeA,IAAI,GAAG,SAhLP;EAiLf,oBAAkBA,IAAI,GAAG,SAjLV;EAkLf6D,EAAAA,GAAG,EAAE7D,IAAI,GAAG,SAlLG;EAmLf,qBAAmBA,IAAI,GAAG,SAnLX;EAoLf,yBAAuBA,IAAI,GAAG,UApLf;EAqLf8D,EAAAA,EAAE,EAAE9D,IAAI,GAAG,UArLI;EAsLf,kBAAgBA,IAAI,GAAG,UAtLR;EAuLf,mBAAiBA,IAAI,GAAG,QAvLT;EAwLf+D,EAAAA,IAAI,EAAE/D,IAAI,GAAG,QAxLE;EAyLf,eAAaA,IAAI,GAAG,MAzLL;EA0Lf,eAAaA,IAAI,GAAG,MA1LL;EA2Lf,kBAAgBA,IAAI,GAAG,SA3LR;EA4LfgE,EAAAA,IAAI,EAAEhE,IAAI,GAAG,SA5LE;EA6Lf,wBAAsBA,IAAI,GAAG,OA7Ld;EA8Lf,eAAaA,IAAI,GAAG,OA9LL;EA+LfiE,EAAAA,GAAG,EAAEjE,IAAI,GAAG,OA/LG;EAgMfkE,EAAAA,GAAG,EAAElE,IAAI,GAAG,OAhMG;EAiMf,oBAAkBA,IAAI,GAAG,WAjMV;EAkMfmE,EAAAA,GAAG,EAAEnE,IAAI,GAAG,WAlMG;EAmMf,6BAA2BA,IAAI,GAAG,SAnMnB;EAoMfoE,EAAAA,GAAG,EAAEpE,IAAI,GAAG,SApMG;EAqMf,oBAAkBA,IAAI,GAAG,SArMV;EAsMf,6BAA2BA,IAAI,GAAG,UAtMnB;EAuMfqE,EAAAA,IAAI,EAAErE,IAAI,GAAG,UAvME;EAwMf,0BAAwBA,IAAI,GAAG,WAxMhB;EAyMfsE,EAAAA,GAAG,EAAEtE,IAAI,GAAG,WAzMG;EA0Mf,0BAAwBA,IAAI,GAAG,WA1MhB;EA2Mf,iBAAeA,IAAI,GAAG,WA3MP;EA4MfuE,EAAAA,OAAO,EAAEvE,IAAI,GAAG,WA5MD;EA6Mf,sBAAoBA,IAAI,GAAG,aA7MZ;EA8MfwE,EAAAA,IAAI,EAAExE,IAAI,GAAG,aA9ME;EA+Mf,mBAAiBA,IAAI,GAAG,cA/MT;EAgNfyE,EAAAA,GAAG,EAAEzE,IAAI,GAAG,cAhNG;EAiNf,oBAAkBA,IAAI,GAAG,WAjNV;EAkNf0E,EAAAA,GAAG,EAAE1E,IAAI,GAAG,WAlNG;EAmNf,yBAAuBA,IAAI,GAAG,OAnNf;EAoNf,gBAAcA,IAAI,GAAG,OApNN;EAqNf2E,EAAAA,GAAG,EAAE3E,IAAI,GAAG,OArNG;EAsNf,iBAAeA,IAAI,GAAG,OAtNP;EAuNf,qBAAmBA,IAAI,GAAG,WAvNX;EAwNf4E,EAAAA,GAAG,EAAE5E,IAAI,GAAG,WAxNG;EAyNf,sBAAoBA,IAAI,GAAG,aAzNZ;EA0Nf6E,EAAAA,IAAI,EAAE7E,IAAI,GAAG,aA1NE;;EA6Nf,mBAAiB,iBA7NF;EA8Nf8E,EAAAA,GAAG,EAAE,iBA9NU;EA+Nf,oBAAkB,kBA/NH;EAgOfC,EAAAA,GAAG,EAAE,kBAhOU;;EAmOf,2BAAyB3E,GAAG,GAAG,WAnOhB;EAoOf4E,EAAAA,GAAG,EAAE5E,GAAG,GAAG,WApOI;EAqOf,yBAAuBA,GAAG,GAAG,QArOd;EAsOf6E,EAAAA,GAAG,EAAE7E,GAAG,GAAG,QAtOI;EAuOf,iBAAeA,GAAG,GAAG,QAvON;EAwOf,4BAA0BA,GAAG,GAAG,MAxOjB;EAyOf8E,EAAAA,IAAI,EAAE9E,GAAG,GAAG,MAzOG;EA0Of,2BAAyBA,GAAG,GAAG,cA1OhB;EA2Of+E,EAAAA,GAAG,EAAE/E,GAAG,GAAG;EA3OI,CAAjB;;EA+OA,IAAIgF,IAAI,GAAGnG,WAAS,GAAG1a,SAAvB;EACA,IAAI8gB,MAAM,GAAGzlB,MAAM,CAAC8F,IAAP,CAAY0f,IAAZ,EAAkBje,MAAlB,CAAyB,UAACC,CAAD,EAAIhG,CAAJ,EAAU;EAC9CgG,EAAAA,CAAC,CAAChG,CAAD,CAAD,GAAOA,CAAP;EACA,SAAOgG,CAAP;EACD,CAHY,EAGV,EAHU,CAAb;;EAIA,cAAc,GAAGxH,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkB8T,QAAlB,EAA4BgF,MAA5B,CAAjB;;EChQA,WAAc,GAAG,CACf,SADe,EAGf,QAHe,EAIf,QAJe,EAKf,QALe,EAOf,UAPe,EAQf,SARe,EASf,SATe,EAUf,YAVe,EAYf,KAZe,EAaf,KAbe,EAcf,eAde,EAef,eAfe,CAAjB;;ECAA,aAAc,GAAG,CACf,WADe,EAEf,SAFe,EAGf,KAHe,EAIf,MAJe,EAKf,QALe,EAMf,SANe,EAOf,MAPe,EAQf,OARe,EASf,aATe,EAUf,cAVe,EAWf,QAXe,EAYf,SAZe,EAaf,OAbe,EAcf,QAde,EAef,SAfe,EAgBf,MAhBe,EAiBf,OAjBe,EAkBf,MAlBe,EAmBf,OAnBe,CAAjB;;ECAA,YAAc,GAAG,CACf,iBADe,EAEf,gBAFe,EAGf,aAHe,EAIf,aAJe,EAKf,eALe,EAMf,eANe,EAOf,cAPe,EAQf,YARe,EASf,YATe,EAUf,eAVe,EAWf,WAXe,EAYf,eAZe,EAaf,iBAbe,EAcf,gBAde,EAef,yBAfe,EAgBf,kBAhBe,EAiBf,kBAjBe,EAkBf,eAlBe,EAmBf,WAnBe,EAoBf,iBApBe,EAqBf,kBArBe,EAsBf,kBAtBe,EAuBf,kBAvBe,EAwBf,YAxBe,EAyBf,YAzBe,EA0Bf,sBA1Be,EA2Bf,qBA3Be,EA4Bf,eA5Be,EA6Bf,WA7Be,EA8Bf,kBA9Be,EA+Bf,kBA/Be,EAgCf,gBAhCe,EAiCf,mBAjCe,EAkCf,oBAlCe,EAmCf,oBAnCe,EAoCf,sBApCe,EAqCf,gBArCe,EAsCf,iBAtCe,EAuCf,iBAvCe,EAwCf,oBAxCe,EAyCf,gBAzCe,EA0Cf,YA1Ce,EA2Cf,cA3Ce,EA4Cf,cA5Ce,EA6Cf,qBA7Ce,EA8Cf,MA9Ce;;EAiDf,UAjDe,EAkDf,wBAlDe,EAmDf,mBAnDe,EAoDf,oBApDe,EAqDf,eArDe,EAsDf,oCAtDe,EAuDf,gCAvDe;EA0Df,SA1De;EA4Df,QA5De,EA6Df,UA7De,EA8Df,aA9De,EA+Df,SA/De,EAgEf,wBAhEe,EAiEf,SAjEe,EAkEf,gBAlEe,EAmEf,YAnEe,EAoEf,SApEe,EAqEf,kBArEe,EAsEf,aAtEe,EAuEf,cAvEe,EAwEf,aAxEe,EAyEf,cAzEe,EA0Ef,wBA1Ee,EA2Ef,uBA3Ee,EA4Ef,cA5Ee,EA6Ef,cA7Ee,EA8Ef,OA9Ee,EA+Ef,YA/Ee,EAgFf,cAhFe,EAiFf,cAjFe;EAmFf,eAnFe,EAoFf,aApFe,EAqFf,iBArFe,EAsFf,aAtFe,EAuFf,eAvFe,EAwFf,QAxFe,EAyFf,eAzFe,EA0Ff,eA1Fe,EA2Ff,sBA3Fe,EA4Ff,wBA5Fe,EA6Ff,iBA7Fe,EA8Ff,wBA9Fe,EA+Ff,eA/Fe,EAgGf,WAhGe,EAiGf,YAjGe,EAkGf,aAlGe,EAmGf,aAnGe,EAoGf,gBApGe,EAqGf,gBArGe,EAsGf,QAtGe;EAwGf,YAxGe,EAyGf,YAzGe,EA0Gf,OA1Ge,EA2Gf,UA3Ge,EA4Gf,aA5Ge,EA6Gf,YA7Ge,EA8Gf,SA9Ge,EA+Gf,WA/Ge,EAgHf,cAhHe,EAiHf,YAjHe,EAkHf,QAlHe,EAmHf,gBAnHe,EAoHf,eApHe,EAqHf,UArHe,EAsHf,UAtHe;EAwHf,gBAxHe,EAyHf,gBAzHe,EA0Hf,aA1He,EA2Hf,YA3He,EA4Hf,aA5He,EA6Hf,SA7He,EA8Hf,aA9He,EA+Hf,UA/He,EAgIf,uBAhIe,EAiIf,QAjIe,EAkIf,eAlIe,EAmIf,gBAnIe,EAoIf,OApIe,EAqIf,gBArIe,EAsIf,kBAtIe,EAuIf,OAvIe,EAwIf,mBAxIe,EAyIf,cAzIe,EA0If,kBA1Ie,EA2If,MA3Ie,EA4If,mBA5Ie,EA6If,iBA7Ie;EA+If,kBA/Ie,EAgJf,QAhJe,CAAjB;;ECAA,SAAc,GAAG,CACf,MADe,EAEf,UAFe,EAGf,KAHe,EAIf,SAJe,EAKf,SALe,EAMf,SANe,EAOf,WAPe,EAQf,OARe,EASf,gBATe,EAUf,WAVe,EAWf,YAXe,EAYf,UAZe,EAaf,KAbe,EAcf,QAde,EAef,QAfe,EAgBf,SAhBe,EAiBf,UAjBe,CAAjB;;ECAA,IAAIC,GAAG,GAAG,EAAV;EAGA,IAAM9f,MAAI,GAAG,CACX,CAACxH,OAAD,EAAqB,OAArB,CADW,EAEX,CAACC,SAAD,EAAyB,WAAzB,CAFW,EAGX,CAACC,QAAD,EAAwB,UAAxB,CAHW,EAIX,CAACC,KAAD,EAAqB,OAArB,CAJW,EAKX,CAACyB,MAAM,CAAC8F,IAAP,CAAYnB,UAAZ,CAAD,EAAyB,WAAzB,CALW,CAAb;AAOAiB,QAAI,CAAChH,OAAL,CAAa,UAAA+T,CAAC,EAAI;EAChB,OAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqR,CAAC,CAAC,CAAD,CAAD,CAAK9R,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpCokB,IAAAA,GAAG,CAAC/S,CAAC,CAAC,CAAD,CAAD,CAAKrR,CAAL,CAAD,CAAH,GAAeqR,CAAC,CAAC,CAAD,CAAhB;EACD;EACF,CAJD;EAMA,SAAc,GAAG+S,GAAjB;;EChBA,IAAM9jB,WAAS,GAAG,SAAZA,SAAY,CAASpF,GAAT,EAAc;EAC9BA,EAAAA,GAAG,GAAGA,GAAG,CAAC6F,KAAJ,EAAN;;EAEA,MAAI,CAAC7F,GAAG,CAACmpB,OAAT,EAAkB;EAChB7gB,IAAAA,OAAO,CAACC,IAAR,CAAa,gFAAb;EACD,GAFD,MAEO;;EAEL,QAAI7I,GAAG,GAAGM,GAAG,CAACmpB,OAAJ,EAAV;EACAzpB,IAAAA,GAAG,CAAC0pB,QAAJ;EACA1pB,IAAAA,GAAG,CAACuF,UAAJ;EACD,GAV6B;;;EAY9BjF,EAAAA,GAAG,CAACqpB,OAAJ,GAAcC,MAAd;EACA,SAAOtpB,GAAP;EACD,CAdD;;EAeA,gBAAc,GAAGoF,WAAjB;;ECfA,IAAMmkB,UAAU,GAAG;EACjB7d,EAAAA,MAAM,EAAE,IADS;EAEjBC,EAAAA,MAAM,EAAE,IAFS;EAGjBC,EAAAA,IAAI,EAAE,IAHW;EAIjBC,EAAAA,GAAG,EAAE,IAJY;EAKjBC,EAAAA,IAAI,EAAE,IALW;EAMjB5L,EAAAA,KAAK,EAAE,IANU;EAOjBK,EAAAA,MAAM,EAAE,IAPS;EAQjB+R,EAAAA,OAAO,EAAE,IARQ;EASjBhP,EAAAA,IAAI,EAAE;EATW,CAAnB;;EAaA,IAAMkmB,UAAU,GAAG,SAAbA,UAAa,CAAUxpB,GAAV,EAAe;EAChC,MAAIic,MAAM,GAAG,EAAb;EACA,MAAI5c,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,aAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,KAAhB,EAAuB;EACrB,WAAO0c,MAAP;EACD;;EACD5c,EAAAA,CAAC,CAACY,KAAF,CAAQ,qBAAR,EAA+BmC,OAA/B,CAAuC,UAACqnB,EAAD,EAAQ;EAC7C,QAAI/pB,GAAG,GAAG+pB,EAAE,CAACxpB,KAAH,CAAS,WAAT,EAAsBypB,IAAtB,CAA2B,QAA3B,CAAV;EACAhqB,IAAAA,GAAG,GAAGiO,UAAU,CAACjO,GAAD,CAAhB;;EACA,QAAIA,GAAG,IAAI,OAAOA,GAAP,KAAe,QAA1B,EAAoC;EAClC,UAAIuM,IAAI,GAAGwd,EAAE,CAACxpB,KAAH,CAAS,WAAT,EAAsBypB,IAAtB,CAA2B,QAA3B,CAAX;EACAzd,MAAAA,IAAI,GAAGA,IAAI,CAAC9G,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;;EACA,UAAI8G,IAAI,IAAIsd,UAAU,CAACpe,cAAX,CAA0Bc,IAA1B,CAAZ,EAA6C;EAC3CgQ,QAAAA,MAAM,CAAChQ,IAAD,CAAN,GAAevM,GAAf;EACD;EACF;EACF,GAVD,EANgC;;EAkBhC,MAAIL,CAAC,CAAC2B,GAAF,CAAM,eAAN,MAA2B,IAA/B,EAAqC;EACnCwC,IAAAA,MAAM,CAAC8F,IAAP,CAAY2S,MAAZ,EAAoB7Z,OAApB,CAA4B,UAAC4C,CAAD;EAAA,aAAQiX,MAAM,CAACjX,CAAD,CAAN,IAAa,CAAC,CAAtB;EAAA,KAA5B;EACD,GApB+B;;;EAsBhChF,EAAAA,GAAG,CAACspB,MAAJ,CAAW,YAAX;EACA,SAAOrN,MAAP;EACD,CAxBD;;EAyBA,YAAc,GAAGuN,UAAjB;;ECpCA,IAAMG,SAAS,GAAG;EAChBC,EAAAA,QAAQ,EAAE,QADM;;EAEhB5K,EAAAA,SAAS,EAAE,QAFK;EAGhBD,EAAAA,OAAO,EAAE,QAHO;EAIhBE,EAAAA,IAAI,EAAE,SAJU;EAKhBE,EAAAA,SAAS,EAAE,QALK;EAMhB0K,EAAAA,SAAS,EAAE,SANK;EAOhBzK,EAAAA,OAAO,EAAE,QAPO;EAQhB0K,EAAAA,UAAU,EAAE,QARI;EAShBxK,EAAAA,KAAK,EAAE,QATS;EAUhBC,EAAAA,QAAQ,EAAE;EAVM,CAAlB;;EAaA,IAAMwK,QAAQ,GAAG,SAAXA,QAAW,CAAU1qB,CAAV,EAAauG,CAAb,EAAgB;EAC/B,MAAIgG,IAAI,GAAGvM,CAAC,CAACY,KAAF,CAAQ,YAAR,EAAsBypB,IAAtB,CAA2B,SAA3B,CAAX;EAEA,MAAIlqB,IAAI,GAAGH,CAAC,CAACY,KAAF,CAAQ,2BAAR,CAAX;EACA,MAAI+pB,IAAI,GAAGxqB,IAAI,CAACkqB,IAAL,CAAU,SAAV,CAAX;;EACA,MAAIlqB,IAAI,CAACwB,GAAL,CAAS,MAAT,CAAJ,EAAsB;EACpBgpB,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIxqB,IAAI,CAACwB,GAAL,CAAS,SAAT,CAAJ,EAAyB;EACvBgpB,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIC,MAAM,GAAG5qB,CAAC,CAAC2B,GAAF,CAAM,IAAN,CAAb,CAX+B;;EAa/B4E,EAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAJ;EACAhG,EAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;;EACA,MAAIkc,MAAJ,EAAY;EACVrkB,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAWsa,IAAX,EAAiB,SAAjB,CAAJ;EACD,GAFD,MAEO;EACLpkB,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAMwa,IAAN,EAAY,SAAZ,CAAJ;EACD;;EACD,SAAOpkB,CAAP;EACD,CArBD;;EAuBA,IAAMiI,WAAS,GAAG,SAAZA,SAAY,CAAU7N,GAAV,EAAekqB,OAAf,EAAwB;EACxC,MAAItpB,IAAI,GAAGZ,GAAG,CAACC,KAAJ,CAAU,4BAAV,CAAX;;EACA,MAAIW,IAAI,CAACrB,KAAT,EAAgB;EACdS,IAAAA,GAAG,CAACspB,MAAJ,CAAW1oB,IAAX;EACD,GAJuC;;;EAMxCA,EAAAA,IAAI,GAAGA,IAAI,CAACH,GAAL,CAAS,0BAAT,CAAP;EACAG,EAAAA,IAAI,GAAGA,IAAI,CAACH,GAAL,CAAS,YAAT,CAAP;EACA,MAAImF,CAAC,GAAGid,WAAS,CAACzT,GAAV,CAAc8a,OAAO,CAAChgB,QAAtB,CAAR;EACA,MAAIkF,GAAG,GAAGxJ,CAAC,CAACC,KAAF,EAAV,CATwC;;EAYxC,MAAIskB,OAAO,GAAGvpB,IAAI,CAAC8oB,IAAL,CAAU,SAAV,CAAd;;EACA,MAAIC,SAAS,CAACxe,cAAV,CAAyBgf,OAAzB,CAAJ,EAAuC;EACrC,WAAOR,SAAS,CAACQ,OAAD,CAAhB;EACD,GAfuC;;;EAkBxC,MAAI9qB,CAAC,GAAGuB,IAAI,CAACX,KAAL,CAAW,4BAAX,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACXF,IAAAA,CAAC,GAAGA,CAAC,CAACoB,GAAF,CAAM,QAAN,CAAJ;EACAmF,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOvM,CAAC,CAACqqB,IAAF,CAAO,SAAP,CAAP,CAAJ;;EACA,QAAI9jB,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,aAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;EACF,GAzBuC;;;EA4BxCvB,EAAAA,CAAC,GAAGuB,IAAI,CAACX,KAAL,CAAW,qDAAX,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACXqG,IAAAA,CAAC,GAAGmkB,QAAQ,CAAC1qB,CAAD,EAAIuG,CAAJ,CAAZ;;EACA,QAAIA,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,aAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;EACF,GAlCuC;;;EAoCxC,MAAIsD,GAAG,GAAGtD,IAAI,CAAC8oB,IAAL,CAAU,SAAV,CAAV;EACA9jB,EAAAA,CAAC,GAAGA,CAAC,CAAChF,IAAF,CAAOsD,GAAP,CAAJ;;EACA,MAAI0B,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,WAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;;EACD,SAAO,IAAP;EACD,CA1CD;;EA2CA,WAAc,GAAGiN,WAAjB;;ECjFA;EACA,IAAMuc,aAAa,GAAG,SAAhBA,aAAgB,CAASpqB,GAAT,EAAc;EAClC,MAAIqqB,GAAG,GAAG,IAAV;;EACA,MAAIrqB,GAAG,CAACgB,GAAJ,CAAQ,wBAAR,CAAJ,EAAuC;EACrCqpB,IAAAA,GAAG,GAAG,MAAN;EACD;;EACD,MAAIrqB,GAAG,CAACgB,GAAJ,CAAQ,wBAAR,CAAJ,EAAuC;EACrCqpB,IAAAA,GAAG,GAAG,MAAN;EACD;;EACD,MAAIrqB,GAAG,CAACgB,GAAJ,CAAQ,iBAAR,CAAJ,EAAgC;EAC9BqpB,IAAAA,GAAG,GAAG,MAAN;EACD,GAViC;;;EAYlCrqB,EAAAA,GAAG,CAACspB,MAAJ,CAAW,6CAAX;EACA,SAAOe,GAAP;EACD,CAdD;;EAeA,eAAc,GAAGD,aAAjB;;ECdA,IAAM9f,UAAQ,GAAG,oBAAjB;EACA,IAAMC,UAAQ,GAAG,aAAjB;EACA,IAAMC,WAAS,GAAG,oBAAlB;EACA,IAAMC,WAAS,GAAG,oBAAlB;;EAEA,IAAMC,QAAM,GAAG,SAATA,MAAS,CAAShL,GAAT,EAAc;EAC3BA,EAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;;EACA,MAAIA,GAAG,GAAG,CAAC,EAAP,IAAaA,GAAG,GAAG,EAAvB,EAA2B;EACzBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CADyB;;EAEzBA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAFyB;;EAGzB,WAAO,YAAYA,GAAnB;EACD;;EACD,SAAO,IAAP;EACD,CARD;;EAUA,IAAMiL,aAAW,GAAG,SAAdA,WAAc,CAAStC,EAAT,EAAa;;EAE/B,MAAIhJ,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASqK,UAAT,CAAR;;EACA,MAAIjL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAL8B;;;EAO/BA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASuK,WAAT,CAAJ;;EACA,MAAInL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAV8B;;;EAY/BA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASwK,WAAT,CAAJ;;EACA,MAAIpL,CAAC,KAAK,IAAV,EAAgB;EACd,QAAIK,GAAG,GAAG6J,MAAM,CAAClK,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;EACA,WAAOqL,QAAM,CAAChL,GAAD,CAAb;EACD,GAhB8B;;;EAkB/BL,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASsK,UAAT,CAAJ;;EACA,MAAIlL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD;;EACD,SAAO,IAAP;EACD,CAvBD;;EAyBA,IAAMirB,aAAa,GAAG,SAAhBA,aAAgB,CAAStqB,GAAT,EAAc;EAClC,MAAIX,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,YAAV,CAAR,CADkC;;EAGlCZ,EAAAA,CAAC,GAAGA,CAAC,CAACiqB,MAAF,CAAS,qBAAT,CAAJ;EACA,MAAIplB,GAAG,GAAG7E,CAAC,CAACqqB,IAAF,CAAO,SAAP,CAAV,CAJkC;;EAOlC1pB,EAAAA,GAAG,CAACspB,MAAJ,CAAW,YAAX,EAPkC;;EAUlC,MAAIrF,UAAQ,CAAC9Y,cAAT,CAAwBjH,GAAxB,CAAJ,EAAkC;EAChC,WAAO+f,UAAQ,CAAC/f,GAAD,CAAf;EACD;;EACD,MAAImE,EAAE,GAAGsC,aAAW,CAACzG,GAAD,CAApB;;EACA,MAAImE,EAAJ,EAAQ;EACN,WAAOA,EAAP;EACD;;EAED,SAAO,IAAP;EACD,CAnBD;;EAoBA,eAAc,GAAGiiB,aAAjB;;MC5DMC;EACJ,gBAAYxmB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAChC,SAAKje,IAAL,GAAYA,IAAI,IAAI,KAApB;EACAie,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,QAAIxb,KAAK,GAAG,EAAZ;;EACA,QAAIwb,OAAO,CAACxb,KAAZ,EAAmB;EACjBA,MAAAA,KAAK,GAAG;EACNlO,QAAAA,IAAI,EAAE0pB,OAAO,CAACxb,KAAR,CAAclO,IAAd,EADA;EAENN,QAAAA,KAAK,EAAEgqB,OAAO,CAACxb,KAAR,CAAcxO,KAAd,EAFD;EAGNoD,QAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHA,OAAR;EAKD,KAV+B;;;EAYhC,QAAI/B,CAAC,GAAGshB,WAAS,CAAC9e,KAAD,EAAQmmB,OAAO,CAAChgB,QAAhB,EAA0B;EAAEwE,MAAAA,KAAK,EAAEA;EAAT,KAA1B,CAAjB,CAZgC;;EAehC,QAAInN,CAAC,CAAC+O,OAAF,EAAJ,EAAiB;EACf/O,MAAAA,CAAC,GAAGA,CAAC,CAACwM,OAAF,CAAU,KAAK9B,IAAf,CAAJ;EACD;;EACDzI,IAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;EAC/B8H,MAAAA,UAAU,EAAE,KADmB;EAE/BC,MAAAA,QAAQ,EAAE,IAFqB;EAG/BnQ,MAAAA,KAAK,EAAE/Y;EAHwB,KAAjC;EAKAiC,IAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACrC8H,MAAAA,UAAU,EAAE,KADyB;EAErCC,MAAAA,QAAQ,EAAE,IAF2B;EAGrCnQ,MAAAA,KAAK,EAAE4P;EAH8B,KAAvC;EAKD;;;;;8BAEO;EACN,UAAI3oB,CAAC,GAAG,IAAIgpB,IAAJ,CAAS,KAAKhpB,CAAd,EAAiB,KAAK0K,IAAtB,EAA4B,KAAKie,OAAjC,CAAR;EACA,aAAO3oB,CAAP;EACD;;;4BACK;EACJ+G,MAAAA,OAAO,CAACgV,GAAR,CAAY,IAAZ;EACA,WAAK/b,CAAL,CAAO+b,GAAP;EACAhV,MAAAA,OAAO,CAACgV,GAAR,CAAY,IAAZ;EACA,aAAO,IAAP;EACD;;;mCACoB;EAAA;;EAAA,UAAVlV,GAAU,uEAAJ,EAAI;EACnB5E,MAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAC4C,CAAD,EAAO;EAC9B,QAAA,KAAI,CAACzD,CAAL,GAAS,KAAI,CAACA,CAAL,CAAOiO,GAAP,CAAWpH,GAAG,CAACpD,CAAD,CAAd,EAAmBA,CAAnB,CAAT;EACD,OAFD;EAGA,aAAO,IAAP;EACD;;;gCACSd,KAAK;EACb,UAAIA,GAAJ,EAAS;EACP,aAAK3C,CAAL,GAAS,KAAKA,CAAL,CAAOX,IAAP,CAAYsD,GAAZ,CAAT;EACD,OAFD,MAEO;EACL,aAAK3C,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAf,CAAT,CADK;EAEN;;EACD,aAAO,IAAP;EACD;;;6BACMgG,KAAK;EACV,aAAO,KAAKxS,CAAL,CAAOyI,MAAP,CAAc+J,GAAd,CAAP;EACD;;;8BACO;EACN,WAAKxS,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;4BACK;EACJ,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAO6W,KAAP,CAAa,KAAKnM,IAAlB,CAAT;EACA,aAAO,IAAP;EACD;;;;+BAEQ;EACP,WAAK1K,CAAL,GAASshB,WAAS,CAACzT,GAAV,CAAc,KAAK8a,OAAL,CAAahgB,QAA3B,EAAqC;EAAEwE,QAAAA,KAAK,EAAE,KAAKwb,OAAL,CAAaxb;EAAtB,OAArC,CAAT,CADO;;EAEP,aAAO,IAAP;EACD;;;;8BAEO;EACN,WAAKnN,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,KAAKvD,IAAnB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;6BAEM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,KAAKvD,IAAnB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;6BAEM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,KAAKpU,IAArB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;;;EAEH,UAAc,GAAGse,IAAjB;;MCzFMG;;;;;EACJ,eAAY3mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,8BAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,UAAKje,IAAL,GAAY,KAAZ;EAFgC;EAGjC;;;IAJese;;MAMZI;;;;;EACJ,iBAAY5mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,OAAZ;EAFgC;EAGjC;;;IAJiBse;;MAMdK;;;;;EACJ,mBAAY7mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,SAAZ;EAFgC;EAGjC;;;IAJmBse;;MAMhB9nB;;;;;EACJ,gBAAYsB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,MAAZ;EAFgC;EAGjC;;;IAJgBse;;MAMbM;;;;;EACJ,mBAAY9mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,MAAZ;EACA,WAAK1K,CAAL,GAASshB,WAAS,CAACqH,OAAO,CAACxb,KAAT,EAAgBwb,OAAO,CAAChgB,QAAxB,CAAlB;EACA,WAAK3I,CAAL,GAAS,OAAKA,CAAL,CAAOsK,GAAP,CAAW9H,KAAX,CAAT;EACA,WAAK+mB,OAAL,GAAe,OAAKvpB,CAAL,CAAOyP,OAAP,EAAf,CALgC;;EAOhC,QAAI,OAAKzP,CAAL,CAAOf,IAAP,KAAgBqiB,WAAS,CAACzT,GAAV,CAAc8a,OAAO,CAAChgB,QAAtB,EAAgC1J,IAAhC,EAApB,EAA4D;EAC1D,aAAKe,CAAL,GAAS,OAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACD;;EAT+B;EAUjC;;;;6BACM;EACL,WAAKjO,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACA,WAAKjO,CAAL,GAAS,KAAKA,CAAL,CAAOsK,GAAP,CAAW,KAAKif,OAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;6BACM;EACL,WAAKvpB,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,MAAhB,CAAT;EACA,WAAK9e,CAAL,GAAS,KAAKA,CAAL,CAAOsK,GAAP,CAAW,KAAKif,OAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;;IArBmBP;;;MAwBhBQ;;;;;EACJ,wBAAYhnB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,KAAZ;EAFgC;EAGjC;;;;6BACM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACA,aAAO,IAAP;EACD;;;6BACM;EACL,WAAKjO,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,MAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;;IAZwBkK;;EAe3B,UAAc,GAAG;EACfA,EAAAA,IAAI,EAAEA,MADS;EAEfG,EAAAA,GAAG,EAAEA,GAFU;EAGfC,EAAAA,KAAK,EAAEA,KAHQ;EAIfC,EAAAA,OAAO,EAAEA,OAJM;EAKfnoB,EAAAA,IAAI,EAAEA,IALS;EAMfooB,EAAAA,OAAO,EAAEA,OANM;EAOfE,EAAAA,YAAY,EAAEA;EAPC,CAAjB;;MClEQR,SAAS3oB,OAAT2oB;;EAER,IAAMS,WAAW,GAAG,SAAdA,WAAc,CAAShrB,GAAT,EAAckqB,OAAd,EAAuBe,OAAvB,EAAgC;EAClD,MAAI1pB,CAAC,GAAG,IAAR;;EACA,MAAIvB,GAAG,CAACT,KAAJ,KAAc,KAAlB,EAAyB;;EAEvB,QAAI0rB,OAAO,CAACrqB,IAAR,KAAiB,IAArB,EAA2B;EACzBW,MAAAA,CAAC,GAAG,IAAIgpB,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAJ,CADyB;EAE1B,KAJsB;;;EAMvB,QAAI1mB,MAAM,CAAC8F,IAAP,CAAY2hB,OAAO,CAACnjB,KAApB,EAA2BzD,MAA3B,GAAoC,CAAxC,EAA2C;EACzC9C,MAAAA,CAAC,GAAG,IAAIgpB,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAJ,CADyC;EAE1C;EACF;;EACD,SAAO3oB,CAAP;EACD,CAbD;;EAcA,cAAc,GAAGypB,WAAjB;;ECfA,IAAMxd,SAAO,GAAG;EACd1B,EAAAA,IAAI,EAAES,MAAK,CAAC2e,IADE;EAEdhrB,EAAAA,KAAK,EAAEqM,MAAK,CAACoe,KAFC;EAGdrY,EAAAA,OAAO,EAAE/F,MAAK,CAACqe,OAHD;EAIdtnB,EAAAA,IAAI,EAAEiJ,MAAK,CAAC9J,IAJE;EAKdlC,EAAAA,MAAM,EAAEgM,MAAK,CAAC/J;EALA,CAAhB;;EASA,IAAM2oB,SAAS,GAAG,SAAZA,SAAY,CAAUnrB,GAAV,EAAekqB,OAAf,EAAwB;;EAExC,MAAI7qB,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,0CAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB,QAAI2E,GAAG,GAAG7E,CAAC,CAACoC,QAAF,GAAaioB,IAAb,CAAkB,SAAlB,CAAV;;EACA,QAAIlc,SAAO,CAACrC,cAAR,CAAuBjH,GAAvB,CAAJ,EAAiC;EAC/B,UAAIknB,KAAK,GAAG5d,SAAO,CAACtJ,GAAD,CAAnB;;EACA,UAAI,CAACknB,KAAL,EAAY;EACV,eAAO,IAAP;EACD;;EACD,UAAInf,IAAI,GAAG,IAAImf,KAAJ,CAAU,IAAV,EAAgBlnB,GAAhB,EAAqBgmB,OAArB,CAAX;EACA,aAAOje,IAAP;EACD;EACF,GAbuC;;;EAgBxC5M,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,4DAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB,QAAI2E,IAAG,GAAG7E,CAAC,CAACoC,QAAF,GAAaioB,IAAb,CAAkB,SAAlB,CAAV;;EACA,QAAIzd,KAAI,GAAG,IAAIM,MAAK,CAACse,OAAV,CAAkB3mB,IAAlB,EAAuB,IAAvB,EAA6BgmB,OAA7B,CAAX;;EACA,WAAOje,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CAvBD;;EAwBA,eAAc,GAAGkf,SAAjB;;;;;;;;;ECjCA,cAAA,SAAA;EACA,WAASE,GAAT,UAAA;EACA,WAAS,GAAT,OAAA;EACA,cAAA,OAAA;EACA,cAAA,KAAA;EACA,cAAA,MAAA;EACA,cAAA,MAAA;EAEA,QAAA,GAAA,GAAA,QAAA;EACE,QAAA,GAAA,cAAA;EACA,QAAA,GAAA,YAAA;EACA,QAAA,GAAA,aAAA;EACA,QAAA,GAAA,aAAA;EACA,QAAA,aAAA;EACA,uBAAA,CAAA,GAAA,IAAA;EACA,mBAAA,CAAA,GAAA,GAAA;EACA,uBAAA,IAAA,GAAA;EACA,0BAAmBC,IAAAA,IAAAA;EACnB,uBAAA,CAAA,GAAA,IAAA;EACA;EACA,uBAAA,CAAA,GAAA,GAAA;2BACmB;0BACHC,IAAAA,IAAAA;gCACG,IAAA,IAAA;+BACC;;;;4BAGH;;;;;;+BAMI9iB,IAAAA,GAAAA;;;;;;;;;+BASF,IAAA,IAAA;6BACA;;6BACD;;2BACD+iB,CAAD,GAACA,IAAAA;;;0BAGC,CAAA,GAAA,IAAA;;;;;;;;6BAQC;;;;;;+BAOE;;;;;;;;;;;;;EAvDvB;;;;;OAKE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCdMT,iBAAiBnpB,OAAjBmpB;;EAGR,IAAMU,YAAY,GAAG,SAAfA,YAAe,CAASzrB,GAAT,EAAckqB,OAAd,EAAuB;EAC1C,MAAI3oB,CAAC,GAAG,IAAR;EACA,MAAI2C,GAAG,GAAGlE,GAAG,CAACC,KAAJ,CAAU,WAAV,EAAuBypB,IAAvB,CAA4B,SAA5B,CAAV;EACA,MAAIpmB,IAAI,GAAG,IAAX,CAH0C;;EAI1C,MAAIsC,CAAC,GAAG8lB,gBAAgB,CAACxnB,GAAD,EAAMZ,IAAN,CAAxB;;EACA,MAAIsC,CAAC,KAAK,IAAV,EAAgB;EACdrE,IAAAA,CAAC,GAAG,IAAIwpB,cAAJ,CAAiBnlB,CAAjB,EAAoB,IAApB,EAA0BskB,OAA1B,CAAJ;EACD;;EACD,SAAO3oB,CAAP;EACD,CATD;;EAUA,eAAc,GAAGkqB,YAAjB;;MCbQlB,SAAmC3oB,OAAnC2oB;MAAMG,QAA6B9oB,OAA7B8oB;MAAKK,iBAAwBnpB,OAAxBmpB;MAAcJ,UAAU/oB,OAAV+oB;EAGjC,IAAMgB,SAAS,GAAG;EAChBjd,EAAAA,KAAK,EAAE,eAACwb,OAAD,EAAa;EAClB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAhB,EAAuB,IAAvB,EAA6Bwb,OAA7B,CAAP;EACD,GAHe;EAIhBza,EAAAA,SAAS,EAAE,mBAACya,OAAD,EAAa;EACtB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAR,CAAc2R,KAAd,CAAoB,CAApB,EAAuB,KAAvB,CAAR,EAAuC,IAAvC,EAA6C6J,OAA7C,CAAP;EACD,GANe;EAOhB3a,EAAAA,QAAQ,EAAE,kBAAC2a,OAAD,EAAa;EACrB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAR,CAAcoT,IAAd,CAAmB,CAAnB,EAAsB,KAAtB,CAAR,EAAsC,IAAtC,EAA4CoI,OAA5C,CAAP;EACD;EATe,CAAlB;EAaA;;EACA,IAAM0B,aAAa,GAAG,SAAhBA,aAAgB,CAAU5rB,GAAV,EAAekqB,OAAf,EAAwB;EAC5C,MAAI2B,WAAW,GAAG3B,OAAO,CAACxb,KAAR,CAAcpL,IAAd,EAAlB,CAD4C;;EAI5C,MAAIjE,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,kDAAV,CAAR,CAJ4C;;EAM5C,MAAI,CAACZ,CAAC,CAACE,KAAP,EAAc;EACZF,IAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,mDAAV,CAAJ;EACD;;EACD,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,GAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERlpB,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAEjE,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,MAA2BmC;EAHzB,KAAV;;EAKA,QAAItqB,EAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,GAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,EAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,EAAP;EACD;EACF,GAnB2C;;;;EAuB5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,mCAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,IAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERpmB,MAAAA,IAAI,EAAEjE,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,MAA2BmC;EAFzB,KAAV;;EAIA,QAAItqB,GAAC,GAAG,IAAIopB,OAAJ,CAAUviB,IAAV,EAAe,IAAf,EAAqB8hB,OAArB,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GAjC2C;;;;EAoC5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oCAAV,CAAJ,CApC4C;;EAsC5C,MAAI,CAACZ,CAAC,CAACE,KAAP,EAAc;EACZF,IAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qCAAV,CAAJ;EACD,GAxC2C;;;EA0C5C,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERlpB,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GApD2C;;;EAsD5C,MAAIvB,GAAG,CAACgB,GAAJ,CAAQ,QAAR,CAAJ,EAAuB;EACrB,QAAIoH,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEF,GAAG,CAACC,KAAJ,CAAU,QAAV,EAAoBypB,IAApB,EADC;EAERlpB,MAAAA,IAAI,EAAE,CAFE;;EAGR8C,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GAhE2C;;;EAmE5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oBAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEgqB,OAAO,CAACxb,KAAR,CAAcxO,KAAd,EADC;EAERM,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF;;EACD,MAAI2C,GAAG,GAAGlE,GAAG,CAAC0pB,IAAJ,CAAS,SAAT,CAAV,CA/E4C;;EAiF5C,MAAIiC,SAAS,CAACxgB,cAAV,CAAyBjH,GAAzB,MAAkC,IAAtC,EAA4C;EAC1C,QAAI3C,GAAC,GAAGoqB,SAAS,CAACznB,GAAD,CAAT,CAAegmB,OAAf,CAAR;;EACA,WAAO3oB,GAAP;EACD,GApF2C;;;EAsF5C,MAAIA,CAAC,GAAG,IAAIgpB,MAAJ,CAASrmB,GAAT,EAAc,IAAd,EAAoBgmB,OAApB,CAAR,CAtF4C;;EAwF5C,MAAI3oB,CAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,KAAtB,EAA6B;EAC3B,WAAO,IAAP;EACD;;EACD,SAAO/O,CAAP;EACD,CA5FD;;EA6FA,eAAc,GAAGqqB,aAAjB;;EC9GA,IAAMX,OAAO,GAAG;EACdnjB,EAAAA,KAAK,EAAElG,QADO;EAEdhB,EAAAA,IAAI,EAAEiB,OAFQ;EAGdkqB,EAAAA,QAAQ,EAAEjqB,WAHI;EAIdoI,EAAAA,QAAQ,EAAEnI;EAJI,CAAhB;EAOA,IAAMiqB,KAAK,GAAG;EACZC,EAAAA,OAAO,EAAEjqB,UADG;EAEZ3B,EAAAA,QAAQ,EAAE4B,WAFE;EAGZiqB,EAAAA,OAAO,EAAEhqB,WAHG;EAIZiqB,EAAAA,QAAQ,EAAEC;EAJE,CAAd;;EAOA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAUrsB,GAAV,EAAekqB,OAAf,EAAwB;;EAExC,MAAIpiB,KAAK,GAAGmjB,OAAO,CAACnjB,KAAR,CAAc9H,GAAd,CAAZ;EACA,MAAIqI,EAAE,GAAG4iB,OAAO,CAAC/gB,QAAR,CAAiBlK,GAAjB,CAAT;EACA,MAAIY,IAAI,GAAGqqB,OAAO,CAACrqB,IAAR,CAAaZ,GAAb,EAAkBkqB,OAAlB,CAAX;EACA,MAAIG,GAAG,GAAGY,OAAO,CAACc,QAAR,CAAiB/rB,GAAjB,CAAV,CALwC;;EAOxC,MAAIqI,EAAJ,EAAQ;EACN6hB,IAAAA,OAAO,GAAG1mB,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkB+Z,OAAlB,EAA2B;EAAEhgB,MAAAA,QAAQ,EAAE7B;EAAZ,KAA3B,CAAV;EACA,QAAIwK,GAAG,GAAGqX,OAAO,CAACxb,KAAR,CAAc1E,MAAd,CAAqB,WAArB,CAAV;EACAkgB,IAAAA,OAAO,CAACxb,KAAR,GAAgBwb,OAAO,CAACxb,KAAR,SAAmBwb,OAAO,CAAChgB,QAA3B,EAAqCpE,GAArC,CAAyC+M,GAAzC,CAAhB;EACD;;EACD,MAAItR,CAAC,GAAG,IAAR,CAZwC;;EAexCA,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACC,OAAN,CAAcjsB,GAAd,EAAmBkqB,OAAnB,EAA4B;EAAEpiB,IAAAA,KAAK,EAALA,KAAF;EAASlH,IAAAA,IAAI,EAAJA,IAAT;EAAeypB,IAAAA,GAAG,EAAHA;EAAf,GAA5B,CAAT,CAfwC;;EAiBxC9oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAAC3rB,QAAN,CAAeL,GAAf,EAAoBkqB,OAApB,CAAT,CAjBwC;;EAmBxC3oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACE,OAAN,CAAclsB,GAAd,EAAmBkqB,OAAnB,CAAT,CAnBwC;;EAqBxC3oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACG,QAAN,CAAensB,GAAf,EAAoBkqB,OAApB,CAAT;;EAEA,MAAI,QAAOoC,OAAP,yCAAOA,OAAP,OAAmBhoB,SAAnB,IAAgCgoB,OAAhC,IAA2CA,OAAO,CAACC,GAAR,CAAYC,KAA3D,EAAkE;EAChElkB,IAAAA,OAAO,CAACgV,GAAR,CAAY,kCAAZ;EACAhV,IAAAA,OAAO,CAACgV,GAAR,yBAA6BmP,IAAI,CAACC,SAAL,CAAe5kB,KAAf,CAA7B;EACAQ,IAAAA,OAAO,CAACgV,GAAR,yBAA6B+M,GAAG,IAAI,GAApC;EACA/hB,IAAAA,OAAO,CAACgV,GAAR,yBAA6B1c,IAAI,IAAI,GAArC;EACA0H,IAAAA,OAAO,CAACgV,GAAR,2BAA+Btd,GAAG,CAAC0pB,IAAJ,EAA/B;EACAphB,IAAAA,OAAO,CAACgV,GAAR,CAAY,SAAZ,EAAuB/b,CAAvB;EACA+G,IAAAA,OAAO,CAACgV,GAAR,CAAY,kCAAZ;EACD;;EAED,MAAI,CAAC/b,CAAL,EAAQ;EACN,WAAO,IAAP;EACD,GAnCuC;;;EAsCxC,MAAI8oB,GAAG,KAAK,MAAZ,EAAoB;EAClB9oB,IAAAA,CAAC,CAAC2b,IAAF;EACD;;EACD,MAAImN,GAAG,KAAK,MAAZ,EAAoB;EAClB9oB,IAAAA,CAAC,CAACya,IAAF;EACD,GA3CuC;;;EA6CxC,MAAIlU,KAAJ,EAAW;EACTvG,IAAAA,CAAC,CAACorB,UAAF,CAAa7kB,KAAb;EACD,GA/CuC;;;EAkDxCvG,EAAAA,CAAC,CAACqrB,SAAF,CAAYhsB,IAAZ;EAEA,SAAOW,CAAP;EACD,CArDD;;EAsDA,gBAAc,GAAG8qB,SAAjB;;ECjEA,IAAMQ,IAAI,GAAG,SAAPA,IAAO,CAAU5gB,IAAV,EAAgBie,OAAhB,EAAyB;EACpCje,EAAAA,IAAI,GAAGA,IAAI,CAAC0gB,UAAL,CAAgBzC,OAAO,CAAC4C,eAAxB,CAAP;EACA,SAAO7gB,IAAP;EACD,CAHD;;;EAMA,IAAM8gB,KAAK,GAAG,SAARA,KAAQ,CAAU/sB,GAAV,EAAekqB,OAAf,EAAwB;;EAEpC,MAAI7qB,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,iCAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIiI,KAAK,GAAGnI,CAAC,CAACysB,MAAF,CAAS,OAAT,CAAZ;EACAtkB,IAAAA,KAAK,GAAG6kB,YAAS,CAAC7kB,KAAD,EAAQ0iB,OAAR,CAAjB;EACA,QAAIziB,GAAG,GAAGpI,CAAC,CAACysB,MAAF,CAAS,KAAT,CAAV;EACArkB,IAAAA,GAAG,GAAG4kB,YAAS,CAAC5kB,GAAD,EAAMyiB,OAAN,CAAf;;EACA,QAAI1iB,KAAJ,EAAW;EACT,aAAO;EACLA,QAAAA,KAAK,EAAEA,KADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GAdmC;;;EAiBpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6DAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI8Q,GAAG,GAAGhR,CAAC,CAACysB,MAAF,EAAV;EACA,QAAItkB,MAAK,GAAG6I,GAAG,CAACqN,IAAhB;;EACA,QAAIrN,GAAG,CAAC/M,IAAR,EAAc;EACZkE,MAAAA,MAAK,GAAGA,MAAK,CAAClB,MAAN,CAAa+J,GAAG,CAAC/M,IAAjB,CAAR;EACD;;EACDkE,IAAAA,MAAK,GAAG6kB,YAAS,CAAC7kB,MAAD,EAAQ0iB,OAAR,CAAjB;;EACA,QAAI1iB,MAAJ,EAAW;EACT,UAAIC,IAAG,GAAG4I,GAAG,CAACoH,EAAd;;EACA,UAAIpH,GAAG,CAAC/M,IAAR,EAAc;EACZmE,QAAAA,IAAG,GAAGA,IAAG,CAACnB,MAAJ,CAAW+J,GAAG,CAAC/M,IAAf,CAAN;EACD;;EACDmE,MAAAA,IAAG,GAAG4kB,YAAS,CAAC5kB,IAAD,EAAMyiB,OAAN,CAAf;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEA,MADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GApCmC;;;EAsCpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,kEAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI8Q,IAAG,GAAGhR,CAAC,CAACysB,MAAF,EAAV;;EACA,QAAItkB,OAAK,GAAG6I,IAAG,CAACnQ,KAAJ,CAAUoG,MAAV,CAAiB+J,IAAG,CAACqN,IAArB,EAA2BrN,IAAG,CAAC/M,IAA/B,CAAZ;;EACAkE,IAAAA,OAAK,GAAG6kB,YAAS,CAAC7kB,OAAD,EAAQ0iB,OAAR,CAAjB;;EACA,QAAI1iB,OAAJ,EAAW;EACT,UAAIC,KAAG,GAAG4I,IAAG,CAACnQ,KAAJ,CAAUoG,MAAV,CAAiB+J,IAAG,CAACoH,EAArB,EAAyBpH,IAAG,CAAC/M,IAA7B,CAAV;;EACAmE,MAAAA,KAAG,GAAG4kB,YAAS,CAAC5kB,KAAD,EAAMyiB,OAAN,CAAf;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEA,OADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GAnDmC;;;EAqDpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qDAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIkY,EAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;EACArU,IAAAA,EAAE,GAAG4U,YAAS,CAAC5U,EAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIzS,EAAJ,EAAQ;EACN,UAAIuV,QAAQ,GAAG3tB,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAf;EACA,UAAIpO,IAAI,GAAGjG,EAAE,CAAC5R,KAAH,EAAX;EACA6X,MAAAA,IAAI,CAACnc,CAAL,GAASmc,IAAI,CAACnc,CAAL,CAAOf,IAAP,CAAYwsB,QAAQ,CAACtD,IAAT,CAAc,QAAd,CAAZ,CAAT;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,IADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAlEmC;;;EAoEpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,2CAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIkY,GAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;;EACArU,IAAAA,GAAE,GAAG4U,YAAS,CAAC5U,GAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIzS,GAAJ,EAAQ;EACN,UAAIuV,SAAQ,GAAG3tB,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAf;;EACA,UAAIpO,KAAI,GAAGjG,GAAE,CAAC5R,KAAH,EAAX;;EACA6X,MAAAA,KAAI,CAACnc,CAAL,GAASmc,KAAI,CAACnc,CAAL,CAAOf,IAAP,CAAYwsB,SAAQ,CAACtD,IAAT,CAAc,QAAd,CAAZ,CAAT;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,KADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAjFmC;;;EAmFpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,uCAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIme,MAAI,GAAGre,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAX;;EACApO,IAAAA,MAAI,GAAG2O,YAAS,CAAC3O,MAAD,EAAOwM,OAAP,CAAhB;;EACA,QAAIxM,MAAJ,EAAU;EACR,UAAIuP,MAAM,GAAG5tB,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAb;;EACA,UAAIrU,IAAE,GAAGiG,MAAI,CAAC7X,KAAL,EAAT;;EACA4R,MAAAA,IAAE,CAAClW,CAAH,GAAOkW,IAAE,CAAClW,CAAH,CAAKf,IAAL,CAAUysB,MAAM,CAACvD,IAAP,CAAY,QAAZ,CAAV,CAAP;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,MADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAhGmC;;;EAkGpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oDAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIme,MAAI,GAAGre,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAX;;EACA,QAAIrU,IAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;;EACApO,IAAAA,MAAI,GAAG2O,YAAS,CAAC3O,MAAD,EAAOwM,OAAP,CAAhB;EACAzS,IAAAA,IAAE,GAAG4U,YAAS,CAAC5U,IAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIxM,MAAI,IAAIjG,IAAZ,EAAgB;EACd,aAAO;EACLjQ,QAAAA,KAAK,EAAEkW,MADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GA9GmC;;;EAgHpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6BAAV,EAAyC,CAAzC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,EAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,EAAJ,EAAO;EACL,UAAMmN,KAAK,GAAG,IAAI6b,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAd;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEkH,KADF;EAELjH,QAAAA,GAAG,EAAEolB,IAAI,CAACtrB,EAAC,CAACsE,KAAF,EAAD,EAAYqkB,OAAZ;EAFJ,OAAP;EAID;EACF,GA1HmC;;;EA4HpC7qB,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6BAAV,EAAyC,CAAzC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,GAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,GAAJ,EAAO;EACL,aAAO;EACLiG,QAAAA,KAAK,EAAEjG,GADF;EAELkG,QAAAA,GAAG,EAAEolB,IAAI,CAACtrB,GAAC,CAACsE,KAAF,EAAD,EAAYqkB,OAAZ;EAFJ,OAAP;EAID;EACF,GArImC;;;EAuIpC7qB,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qBAAV,EAAiC,CAAjC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,GAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,GAAJ,EAAO;EACL,aAAO;EACLiG,QAAAA,KAAK,EAAEjG,GADF;EAELkG,QAAAA,GAAG,EAAElG,GAAC,CAACsE,KAAF,GAAU4B,GAAV;EAFA,OAAP;EAID;EACF,GAhJmC;;;EAkJpC,MAAIlG,CAAC,GAAG8qB,YAAS,CAACrsB,GAAD,EAAMkqB,OAAN,CAAjB;EACA,SAAO;EACL1iB,IAAAA,KAAK,EAAEjG,CADF;EAELkG,IAAAA,GAAG,EAAElG,CAAC,CAACsE,KAAF,GAAU4B,GAAV;EAFA,GAAP;EAID,CAvJD;;EAwJA,iBAAc,GAAGslB,KAAjB;;EC7JA,IAAM1lB,OAAO,GAAG,SAAVA,OAAU,CAAUrH,GAAV,EAAekqB,OAAf,EAAwB;;EAEtCA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EAEAA,EAAAA,OAAO,CAAChgB,QAAR,GAAmBggB,OAAO,CAAChgB,QAAR,IAAoB,SAAvC;EACAggB,EAAAA,OAAO,CAACxb,KAAR,GAAgBmU,WAAS,CAACqH,OAAO,CAACxb,KAAR,IAAiB,IAAlB,EAAwBwb,OAAO,CAAChgB,QAAhC,CAAzB,CALsC;;EAOtClK,EAAAA,GAAG,GAAGoF,YAAS,CAACpF,GAAD,CAAf,CAPsC;;EAStC,SAAOktB,aAAW,CAACltB,GAAD,EAAMkqB,OAAN,CAAlB;EACD,CAVD;;EAWA,cAAc,GAAG7iB,OAAjB;;ECfA,IAAIyG,GAAG,GAAG,CACR,CAAC,KAAD,EAAQ,QAAR,CADQ,EAER,CAAC,KAAD,EAAQ,SAAR,CAFQ,EAGR,CAAC,MAAD,EAAS,SAAT,CAHQ,EAIR,CAAC,KAAD,EAAQ,WAAR,CAJQ,EAKR,CAAC,KAAD,EAAQ,UAAR,CALQ,EAMR,CAAC,OAAD,EAAU,UAAV,CANQ,EAOR,CAAC,KAAD,EAAQ,QAAR,CAPQ,EAQR,CAAC,KAAD,EAAQ,UAAR,CARQ,EASR,CAAC,KAAD,EAAQ,QAAR,CATQ,EAWR,CAAC,KAAD,EAAQ,SAAR,CAXQ,EAYR,CAAC,KAAD,EAAQ,UAAR,CAZQ,EAaR,CAAC,KAAD,EAAQ,OAAR,CAbQ,EAcR,CAAC,KAAD,EAAQ,OAAR,CAdQ,EAeR,CAAC,KAAD,EAAQ,MAAR,CAfQ,EAgBR,CAAC,KAAD,EAAQ,MAAR,CAhBQ,EAiBR,CAAC,KAAD,EAAQ,QAAR,CAjBQ,EAkBR,CAAC,KAAD,EAAQ,WAAR,CAlBQ,EAmBR,CAAC,MAAD,EAAS,WAAT,CAnBQ,EAoBR,CAAC,KAAD,EAAQ,SAAR,CApBQ,EAqBR,CAAC,KAAD,EAAQ,UAAR,CArBQ,EAsBR,CAAC,KAAD,EAAQ,UAAR,CAtBQ,CAAV;EAyBAA,GAAG,GAAGA,GAAG,CAACqf,GAAJ,CAAQ,UAAAhX,CAAC,EAAI;EACjB,SAAO;EAAE,aAAOA,CAAC,CAAC,CAAD,CAAV;EAAe,YAAMA,CAAC,CAAC,CAAD;EAAtB,GAAP;EACD,CAFK,CAAN;EAIA,YAAc,GAAGrI,GAAjB;;EC1BA,aAAc,GAAG;;EAEf0E,EAAAA,IAAI,EAAE,cAAUzD,OAAV,EAAmB;EAAA;;EACvB,QAAI5L,CAAC,GAAG,IAAR;;EACA,QAAI,OAAO4L,OAAP,KAAmB,QAAvB,EAAiC;EAC/B5L,MAAAA,CAAC,GAAG4L,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EACDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EAAErN,MAAAA,KAAK,EAAE;EAAT,KAArB;EACA,QAAI2O,GAAG,GAAG,EAAV;EACA,QAAIrG,MAAM,GAAG+E,OAAO,CAAC/E,MAAR,IAAkB,KAA/B;EACA,SAAK5H,OAAL,CAAa,UAACpC,GAAD,EAAS;EACpB,UAAIwS,IAAI,GAAGxS,GAAG,CAACwS,IAAJ,CAASzD,OAAT,EAAkB,CAAlB,CAAX;EACA,UAAI3G,GAAG,GAAGyG,UAAK,CAAC7O,GAAD,EAAM,KAAI,CAACkqB,OAAX,CAAf;EACA,UAAI1iB,KAAK,GAAGY,GAAG,CAACZ,KAAJ,GAAYY,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiBA,MAAjB,CAAZ,GAAuC,IAAnD;EACA,UAAIvC,GAAG,GAAGW,GAAG,CAACX,GAAJ,GAAUW,GAAG,CAACX,GAAJ,CAAQuC,MAAR,CAAeA,MAAf,CAAV,GAAmC,IAA7C,CAJoB;;EAMpBwI,MAAAA,IAAI,CAAChS,IAAL,GAAY;EACVgH,QAAAA,KAAK,EAAEA,KADG;EAEVC,QAAAA,GAAG,EAAEA;EAFK,OAAZ,CANoB;;EAWpB,UAAID,KAAK,IAAIC,GAAb,EAAkB;EAChB+K,QAAAA,IAAI,CAAChS,IAAL,CAAUH,QAAV,GAAqB+H,GAAG,CAACZ,KAAJ,CAAUjG,CAAV,CAAY8K,IAAZ,CAAiBjE,GAAG,CAACX,GAAJ,CAAQlG,CAAzB,CAArB,CADgB;;EAGhB,eAAOiR,IAAI,CAAChS,IAAL,CAAUH,QAAV,CAAmB0L,YAA1B;EACA,eAAOyG,IAAI,CAAChS,IAAL,CAAUH,QAAV,CAAmBsM,OAA1B;EACD;;EACD0D,MAAAA,GAAG,CAACyH,IAAJ,CAAStF,IAAT;EACD,KAlBD;;EAmBA,QAAIrP,CAAC,KAAK,IAAV,EAAgB;EACd,aAAOkN,GAAG,CAAClN,CAAD,CAAV;EACD;;EACD,WAAOkN,GAAP;EACD,GAlCc;;;EAqCfrG,EAAAA,MAAM,EAAE,gBAAU+J,GAAV,EAAe;EAAA;;EACrB,SAAK3R,OAAL,CAAa,UAACpC,GAAD,EAAS;EACpB,UAAIoI,GAAG,GAAGyG,UAAK,CAAC7O,GAAD,EAAM,MAAI,CAACkqB,OAAX,CAAf;EACA,UAAIhmB,GAAG,GAAG,EAAV;;EACA,UAAIkE,GAAG,CAACZ,KAAR,EAAe;EACbtD,QAAAA,GAAG,GAAGkE,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiB+J,GAAjB,CAAN;;EACA,YAAI3L,GAAG,CAACX,GAAR,EAAa;EACX,cAAIA,GAAG,GAAGW,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiB+J,GAAjB,CAAV;;EACA,cAAI7P,GAAG,KAAKuD,GAAZ,EAAiB;EACfvD,YAAAA,GAAG,IAAI,SAASuD,GAAhB;EACD;EACF;;EACDzH,QAAAA,GAAG,CAACe,WAAJ,CAAgBmD,GAAhB,EAAqB;EAAEkpB,UAAAA,QAAQ,EAAE,IAAZ;EAAkBC,UAAAA,QAAQ,EAAE;EAA5B,SAArB;EACD;EACF,KAbD;EAcA,WAAO,IAAP;EACD,GArDc;;;EAuDfC,EAAAA,UAAU,EAAE,sBAAY;EAAA;;EACtBC,IAAAA,QAAO,CAACnrB,OAAR,CAAgB,UAAC+T,CAAD,EAAO;EACrB,MAAA,MAAI,CAAChR,OAAL,CAAagR,CAAC,SAAd,EAAsBA,CAAC,QAAvB,EAA8B,IAA9B;EACD,KAFD;EAGA,WAAO,IAAP;EACD,GA5Dc;;;EA8DfqX,EAAAA,WAAW,EAAE,uBAAY;EAAA;;EACvBD,IAAAA,QAAO,CAACnrB,OAAR,CAAgB,UAAC+T,CAAD,EAAO;EACrB,MAAA,MAAI,CAAChR,OAAL,CAAagR,CAAC,QAAd,EAAqBA,CAAC,SAAtB,EAA8B,IAA9B;EACD,KAFD;EAGA,WAAO,IAAP;EACD;EAnEc,CAAjB;;ECGA,IAAMyK,YAAU,GAAG,SAAbA,UAAa,CAAU6M,GAAV,EAAeC,KAAf,EAAsB;;EAEvCA,EAAAA,KAAK,CAACC,OAAN,CAAcC,KAAd,EAFuC;;EAIvCF,EAAAA,KAAK,CAACG,QAAN,CAAeC,KAAf,EAJuC;;EAMvCJ,EAAAA,KAAK,CAACK,WAAN,CAAkBC,MAAlB;;;EANuC,MASjCC,KATiC;EAAA;;EAAA;;EAUrC,mBAAYC,IAAZ,EAAkBxQ,IAAlB,EAAwBxI,CAAxB,EAA2B;EAAA;;EAAA;;EACzB,gCAAMgZ,IAAN,EAAYxQ,IAAZ,EAAkBxI,CAAlB;EACA,YAAKgV,OAAL,GAAe;EACb4C,QAAAA,eAAe,EAAE;EAAEvT,UAAAA,KAAK,EAAE;EAAT;EADJ,OAAf;EAFyB;EAK1B;;EAfoC;EAAA,IASnBkU,GATmB;;;EAkBvCjqB,EAAAA,MAAM,CAAC2M,MAAP,CAAc8d,KAAK,CAACxqB,SAApB,EAA+B9B,SAA/B;;EAEA8rB,EAAAA,GAAG,CAAChqB,SAAJ,CAAc4L,KAAd,GAAsB,UAAUlM,CAAV,EAAa;EACjC,QAAI+mB,OAAO,GAAG,EAAd;;EACA,QAAI/mB,CAAC,IAAI,QAAOA,CAAP,MAAa,QAAtB,EAAgC;EAC9B+mB,MAAAA,OAAO,GAAG/mB,CAAV;EACAA,MAAAA,CAAC,GAAG,IAAJ;EACD;;EACD,QAAIgrB,CAAC,GAAG,KAAKC,OAAL,EAAR;EACA,QAAI/e,KAAK,GAAG8e,CAAC,CAACluB,KAAF,CAAQ,QAAR,CAAZ;;EACA,QAAI,OAAOkD,CAAP,KAAa,QAAjB,EAA2B;EACzBkM,MAAAA,KAAK,GAAGA,KAAK,CAACsT,GAAN,CAAUxf,CAAV,CAAR;EACD;;EACD,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBkM,MAAAA,KAAK,GAAGA,KAAK,CAACsT,GAAN,CAAUxf,CAAV,CAAR;EACD;;EACD,QAAI5B,CAAC,GAAG,IAAI0sB,KAAJ,CAAU5e,KAAK,CAAC6e,IAAhB,EAAsB,IAAtB,EAA4B,KAAKR,KAAjC,CAAR;;EACA,QAAIxD,OAAO,CAACxb,KAAZ,EAAmB;EACjBwb,MAAAA,OAAO,CAACxb,KAAR,GAAgBmU,WAAS,CAACqH,OAAO,CAACxb,KAAT,EAAgBwb,OAAO,CAAChgB,QAAxB,CAAzB;EACD;;EACD3I,IAAAA,CAAC,CAAC2oB,OAAF,GAAYA,OAAZ;EACA,WAAO3oB,CAAP;EACD,GApBD;EAqBD,CAzCD;;WA2Cc,GAAGqf;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"compromise-dates.js","sources":["../src/01-tag/00-basic.js","../src/01-tag/01-values.js","../src/01-tag/02-dates.js","../src/01-tag/03-sections.js","../src/01-tag/04-time.js","../src/01-tag/05-shifts.js","../src/01-tag/06-fixup.js","../src/01-tag/index.js","../src/data/_tags.js","../node_modules/spacetime/builds/spacetime.mjs","../src/data/_timezones.js","../src/data/words/dates.js","../src/data/words/durations.js","../src/data/words/holidays.js","../src/data/words/times.js","../src/data/words/index.js","../src/02-getDate/00-normalize.js","../src/03-parseDate/sections/01-shift.js","../src/03-parseDate/sections/02-time.js","../src/03-parseDate/sections/03-relative.js","../src/03-parseDate/sections/04-timezone.js","../src/03-parseDate/Unit.js","../src/03-parseDate/_units.js","../src/03-parseDate/steps/00-implied.js","../src/03-parseDate/steps/01-duration.js","../node_modules/spacetime-holiday/builds/spacetime-holiday.js","../src/03-parseDate/steps/02-holidays.js","../src/03-parseDate/steps/03-explicit.js","../src/03-parseDate/index.js","../src/02-getDate/01-parse-range.js","../src/02-getDate/index.js","../src/data/_abbrevs.js","../src/methods.js","../src/index.js"],"sourcesContent":["//ambiguous 'may' and 'march'\nconst preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning)' //2\nconst seasons = '(spring|summer|winter|fall|autumn)'\n\n//ensure a year is approximately typical for common years\n//please change in one thousand years\nconst tagYear = (m, reason) => {\n if (m.found !== true) {\n return\n }\n let term = m.termList()[0]\n if (term) {\n let num = parseInt(term.clean, 10)\n if (num && num > 1000 && num < 3000) {\n m.tag('Year', reason)\n }\n }\n}\n//same, but for less-confident values\nconst tagYearSafe = (m, reason) => {\n if (m.found !== true) {\n return\n }\n let term = m.termList()[0]\n if (term) {\n let num = parseInt(term.clean, 10)\n if (num && num > 1900 && num < 2030) {\n m.tag('Year', reason)\n }\n }\n}\n\nconst fixDates = function (doc) {\n doc.match('in the (night|evening|morning|afternoon|day|daytime)').tag('Time', 'in-the-night')\n doc.match('(#Value|#Time) (am|pm)').tag('Time', 'value-ampm')\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #Date+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //june 7\n val.match('(#WeekDay|#Month) #Value').ifNo('#Money').tag('Date', 'date-value')\n\n //7 june\n val.match('#Value (#WeekDay|#Month)').ifNo('#Money').tag('Date', 'value-date')\n\n //may twenty five\n val.match('#TextValue #TextValue').if('#Date').tag('#Date', 'textvalue-date')\n\n //eg 'year'\n let duration = val.if('#Duration')\n if (duration.found === true) {\n //for 4 months\n duration.match('for #Value #Duration').tag('Date', 'for-x-duration')\n //two days before\n duration.match('#Value #Duration #Conjunction').tag('Date', 'val-duration-conjunction')\n //for four days\n duration.match(`${preps}? #Value #Duration`).tag('Date', 'value-duration')\n //two years old\n duration.match('#Value #Duration old').unTag('Date', 'val-years-old')\n }\n }\n\n //seasons\n let season = doc.if(seasons)\n if (season.found === true) {\n season.match(`${preps}? ${thisNext} ${seasons}`).tag('Date', 'thisNext-season')\n season.match(`the? ${sections} of ${seasons}`).tag('Date', 'section-season')\n season.match(`${seasons} ${preps}? #Cardinal`).tag('Date', 'season-year')\n }\n\n //rest-dates\n let date = doc.if('#Date')\n if (date.found === true) {\n //june the 5th\n date.match('#Date the? #Ordinal').tag('Date', 'correction')\n //last month\n date.match(`${thisNext} #Date`).tag('Date', 'thisNext')\n //by 5 March\n date.match('due? (by|before|after|until) #Date').tag('Date', 'by')\n //next feb\n date.match('(last|next|this|previous|current|upcoming|coming|the) #Date').tag('Date', 'next-feb')\n //start of june\n date.match(`the? ${sections} of #Date`).tag('Date', 'section-of')\n //fifth week in 1998\n date.match('#Ordinal #Duration in #Date').tag('Date', 'duration-in')\n //early in june\n date.match('(early|late) (at|in)? the? #Date').tag('Time', 'early-evening')\n //tomorrow before 3\n date.match('#Date (by|before|after|at|@|about) #Cardinal').not('^#Date').tag('Time', 'date-before-Cardinal')\n //saturday am\n date.match('#Date [(am|pm)]', 0).unTag('Verb').unTag('Copula').tag('Time', 'date-am')\n //feb to june\n date.match('#Date (#Preposition|to) #Date').ifNo('#Duration').tag('Date', 'date-prep-date')\n }\n\n //year/cardinal tagging\n let cardinal = doc.if('#Cardinal')\n if (cardinal.found === true) {\n let v = cardinal.match(`#Date #Value [#Cardinal]`, 0)\n tagYear(v, 'date-value-year')\n //scoops up a bunch\n v = cardinal.match(`#Date+ [#Cardinal]`, 0)\n tagYear(v, 'date-year')\n //feb 8 2018\n v = cardinal.match(`#Month #Value [#Cardinal]`, 0)\n tagYear(v, 'month-value-year')\n //feb 8 to 10th 2018\n v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0)\n tagYear(v, 'month-range-year')\n //in 1998\n v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year) [#Cardinal]`, 0)\n tagYear(v, 'in-year')\n //q2 2009\n v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //2nd quarter 2009\n v = cardinal.match('#Ordinal quarter [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //in the year 1998\n v = cardinal.match('the year [#Cardinal]', 0)\n tagYear(v, 'in-year')\n //it was 1998\n v = cardinal.match('it (is|was) [#Cardinal]', 0)\n tagYearSafe(v, 'in-year')\n }\n\n let time = doc.if('#Time')\n if (time.found === true) {\n //by 6pm\n time.match('(by|before|after|at|@|about) #Time').tag('Time', 'preposition-time')\n //7 7pm\n time.match('#Cardinal #Time').not('#Year').tag('Time', 'value-time')\n //2pm est\n time.match('#Time [(eastern|pacific|central|mountain)]', 0).tag('Date', 'timezone')\n //6pm est\n time.match('#Time [(est|pst|gmt)]', 0).tag('Date', 'timezone abbr')\n }\n\n return doc\n}\nmodule.exports = fixDates\n","const here = 'date-values'\n//\nconst values = function (doc) {\n // a year ago\n if (!doc.has('once [a] #Duration')) {\n doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here)\n }\n if (doc.has('#Value')) {\n //june 5 to 7th\n doc.match('#Month #Value to #Value of? #Year?').tag('Date', here)\n //5 to 7th june\n doc.match('#Value to #Value of? #Month #Year?').tag('Date', here)\n //third week of may\n doc.match('#Value #Duration of #Date').tag('Date', here)\n //two days after\n doc.match('#Value+ #Duration (after|before|into|later|afterwards|ago)?').tag('Date', here)\n //two days\n doc.match('#Value #Date').tag('Date', here)\n //june 5th\n doc.match('#Date #Value').tag('Date', here)\n //tuesday at 5\n doc.match('#Date #Preposition #Value').tag('Date', here)\n //tomorrow before 3\n doc.match('#Date (after|before|during|on|in) #Value').tag('Date', here)\n //a year and a half\n doc.match('#Value (year|month|week|day) and a half').tag('Date', here)\n //5 and a half years\n doc.match('#Value and a half (years|months|weeks|days)').tag('Date', here)\n //on the fifth\n doc.match('on the #Ordinal').tag('Date', here)\n }\n return doc\n}\nmodule.exports = values\n","const here = 'date-tagger'\n//\nconst dateTagger = function(doc) {\n\n doc.match('(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)').match('#Noun').tag('Season', here)\n doc.match('(q1|q2|q3|q4)').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) quarter').tag('FinancialQuarter', here)\n doc.match('(this|next|last|current) season').tag('Season', here)\n\n if (doc.has('#Date')) {\n //friday to sunday\n doc.match('#Date #Preposition #Date').tag('Date', here);\n //once a day..\n doc.match('(once|twice) (a|an|each) #Date').tag('Date', here);\n //TODO:fixme\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here);\n //tuesday\n doc.match('#Date+').tag('Date', here);\n //by June\n doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here);\n //a year after..\n doc.match('a #Duration').tag('Date', here);\n //between x and y\n doc.match('(between|from) #Date').tag('Date', here);\n doc.match('(to|until|upto) #Date').tag('Date', here);\n doc.match('#Date and #Date').tag('Date', here);\n //during this june\n doc.match('(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)').tag('Date', here);\n //day after next\n doc.match('the? #Date after next one?').tag('Date', here);\n //approximately...\n doc.match('(about|approx|approximately|around) #Date').tag('Date', here);\n }\n return doc\n}\nmodule.exports = dateTagger\n","const here = 'section-tagger'\n//\nconst sectionTagger = function(doc) {\n if (doc.has('#Date')) {\n // //next september\n doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here);\n //starting this june\n doc.match('(starting|beginning|ending) #Date').tag('Date', here);\n //start of june\n doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here);\n //this coming june\n doc.match('(the|this) #Date').tag('Date', here);\n }\n return doc\n}\nmodule.exports = sectionTagger\n","const here = 'time-tagger'\n\n//\nconst timeTagger = function (doc) {\n // quarter to seven (not march 5 to 7)\n if (doc.has('#Cardinal') && !doc.has('#Month')) {\n doc.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal').tag('Time', here)\n }\n //timezone\n if (doc.has('#Date')) {\n //eastern daylight time\n doc.match('#Noun (standard|daylight|central|mountain)? time').tag('Timezone', here)\n //utc+5\n doc.match('/^utc[+-][0-9]/').tag('Timezone', here)\n doc.match('/^gmt[+-][0-9]/').tag('Timezone', here)\n\n doc.match('(in|for|by|near|at) #Timezone').tag('Timezone', here)\n\n // https://raw.githubusercontent.com/davispuh/TimezoneParser/master/data/abbreviations.yml\n // let abbr =\n // '(acdt|acst|ace|dmt|ist|tse|addt|adt|aedt|aest|ahdt|ahst|akdt|akst|amt|nst|apt|awt|gmt|awdt|awst|bdst|bst|bdt|nwt|bmt|wet|bost|cddt|cdt|cet|cmt|cpt|cst|cwt|chst|gst|eat|eddt|edt|eest|eet|emt|ept|ewt|est|ffmt|fmt|hdt|hst|hkst|hkt|hmt|iddt|idt|jmt|imt|jdt|jst|kdt|kst|kmt|lst|mddt|mdst|msd|msk|mdt|mmt|mpt|pdt|pst|mst|mwt|nddt|ndt|npt|nzdt|nzmt|nzst|pddt|pkst|pkt|plmt|pmmt|pmt|ppmt|ppt|pwt|qmt|rmt|sast|sdmt|set|sjmt|smt|sst|tbmt|tmt|utc|wast|wemt|wib|wit|wita|wmt|yddt|ydt|ypt|ywt|yst)'\n // doc.match(abbr).tag('Timezone', here)\n }\n return doc\n}\nmodule.exports = timeTagger\n","const here = 'shift-tagger'\n//\nconst shiftTagger = function (doc) {\n if (doc.has('#Date')) {\n //'two days before'/ 'nine weeks frow now'\n doc.match('#Cardinal #Duration (before|after|ago|from)').tag('#DateShift', here)\n // in two weeks\n doc.match('in #Cardinal #Duration').tag('#DateShift', here)\n //two weeks and three days before\n doc.match('#Cardinal #Duration and? #DateShift').tag('#DateShift', here)\n doc.match('#DateShift and #Cardinal #Duration').tag('#DateShift', here)\n // doc.match('#Cardinal #Duration and? #DateShift').tag('#DateShift', here)\n }\n return doc\n}\nmodule.exports = shiftTagger\n","const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n //fixups\n if (doc.has('#Date')) {\n //first day by monday\n let oops = doc.match('#Date+ by #Date+')\n if (oops.found && !oops.has('^due')) {\n oops.match('^#Date+').unTag('Date', 'by-monday')\n }\n\n let d = doc.match('#Date+')\n //'spa day'\n d.match('^day$').unTag('Date', 'spa-day')\n // tomorrow's meeting\n d.match('(in|of|by|for)? (#Possessive && #Date)').unTag('Date', 'tomorrows meeting')\n\n let knownDate = '(yesterday|today|tomorrow)'\n if (d.has(knownDate)) {\n //yesterday 7\n d.match(`${knownDate} [#Value]$`).unTag('Date', 'yesterday-7')\n //7 yesterday\n d.match(`^[#Value] ${knownDate}$`, 0).unTag('Date', '7 yesterday')\n //friday yesterday\n d.match(`#WeekDay+ ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'fri-yesterday')\n\n // yesterday yesterday\n // d.match(`${knownDate}+ ${knownDate}$`)\n // .unTag('Date')\n // .lastTerm()\n // .tag('Date', here)\n d.match(`(this|last|next) #Date ${knownDate}$`).unTag('Date').lastTerm().tag('Date', 'this month yesterday')\n }\n //tomorrow on 5\n d.match(`on #Cardinal$`).unTag('Date', here)\n //this tomorrow\n d.match(`this tomorrow`).terms(0).unTag('Date', 'this-tomorrow')\n //q2 2019\n d.match(`(q1|q2|q3|q4) #Year`).tag('Date', here)\n //5 tuesday\n // d.match(`^#Value #WeekDay`).terms(0).unTag('Date');\n //5 next week\n d.match(`^#Value (this|next|last)`).terms(0).unTag('Date', here)\n\n if (d.has('(last|this|next)')) {\n //this month 7\n d.match(`(last|this|next) #Duration #Value`).terms(2).unTag('Date', here)\n //7 this month\n d.match(`!#Month #Value (last|this|next) #Date`).terms(0).unTag('Date', here)\n }\n //january 5 5\n if (d.has('(#Year|#Time|#TextValue|#NumberRange)') === false) {\n d.match('(#Month|#WeekDay) #Value #Value').terms(2).unTag('Date', here)\n }\n //between june\n if (d.has('^between') && !d.has('and .')) {\n d.unTag('Date', here)\n }\n //june june\n if (d.has('#Month #Month') && !d.has('@hasHyphen') && !d.has('@hasComma')) {\n d.match('#Month').lastTerm().unTag('Date', 'month-month')\n }\n // log the hours\n if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours')\n }\n // about thanksgiving\n if (d.has('about #Holiday')) {\n d.match('about').unTag('#Date', 'about-thanksgiving')\n }\n\n // a month from now\n d.match('(from|by|before) now').unTag('Time')\n // dangling date-chunks\n // if (d.has('!#Date (in|of|by|for) !#Date')) {\n // d.unTag('Date', 'dangling-date')\n // }\n }\n return doc\n}\nmodule.exports = fixUp\n","const methods = [\n require('./00-basic'),\n require('./01-values'),\n require('./02-dates'),\n require('./03-sections'),\n require('./04-time'),\n require('./05-shifts'),\n require('./06-fixup'),\n]\n// run each of the taggers\nconst tagDate = function (doc) {\n methods.forEach((fn) => fn(doc))\n return doc\n}\nmodule.exports = tagDate\n","module.exports = {\n FinancialQuarter: {\n isA: 'Date',\n },\n // 'summer'\n Season: {\n isA: 'Date',\n },\n // '1982'\n Year: {\n isA: ['Date'],\n notA: 'RomanNumeral',\n },\n // 'months'\n Duration: {\n isA: ['Date', 'Noun'],\n },\n // 'easter'\n Holiday: {\n isA: ['Date', 'Noun'],\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n },\n // 'two weeks before'\n DateShift: {\n isA: ['Date'],\n },\n}\n","/* spencermountain/spacetime 6.6.3 Apache 2.0 */\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day') {\n return 'date';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var absOffset = Math.abs(offset);\n var sign = offset > 0 ? '+' : '-';\n return \"\".concat(sign).concat(exports.zeroPad(absOffset)).concat(delimiter, \"00\");\n };\n});\nvar fns_1 = fns.isLeapYear;\nvar fns_2 = fns.isDate;\nvar fns_3 = fns.isArray;\nvar fns_4 = fns.isObject;\nvar fns_5 = fns.zeroPad;\nvar fns_6 = fns.titleCase;\nvar fns_7 = fns.ordinal;\nvar fns_8 = fns.toCardinal;\nvar fns_9 = fns.normalize;\nvar fns_10 = fns.getEpoch;\nvar fns_11 = fns.beADate;\nvar fns_12 = fns.formatTimezone;\n\nvar zeroPad = fns.zeroPad;\n\nvar serialize = function serialize(d) {\n return zeroPad(d.getMonth() + 1) + '/' + zeroPad(d.getDate()) + ':' + zeroPad(d.getHours());\n}; // a timezone will begin with a specific offset in january\n// then some will switch to something else between november-march\n\n\nvar shouldChange = function shouldChange(epoch, start, end, defaultOffset) {\n //note: this has a cray order-of-operations issue\n //we can't get the date, without knowing the timezone, and vice-versa\n //it's possible that we can miss a dst-change by a few hours.\n var d = new Date(epoch); //(try to mediate this a little?)\n\n var bias = d.getTimezoneOffset() || 0;\n var shift = bias + defaultOffset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n\n d = new Date(epoch + shift);\n var current = serialize(d); //eg. is it after ~november?\n\n if (current >= start) {\n //eg. is it before ~march~ too?\n if (current < end) {\n return true;\n }\n }\n\n return false;\n};\n\nvar summerTime = shouldChange;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/05:03->10/04:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s\": \"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west\",\n\t\"8|n|03/25:03->09/29:23\": \"2/ulan_bator\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos\",\n\t\"6.5|n\": \"2/rangoon,2/yangon,9/cocos\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives\",\n\t\"5.75|n\": \"2/kathmandu,2/katmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/21:00->09/20:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/29:03->10/25:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye\",\n\t\"3|n|03/29:02->10/25:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/29:00->10/24:24\": \"2/beirut\",\n\t\"3|n|03/27:02->10/25:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/27:00->10/31:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/27:00->10/30:01\": \"2/amman\",\n\t\"3|n|03/27:00->10/29:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte\",\n\t\"2|s|03/29:02->10/25:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/29:02->10/25:03\": \"0/ceuta,arctic/longyearbyen,3/jan_mayen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s|04/02:01->09/03:03\": \"0/windhoek\",\n\t\"1|s\": \"0/kinshasa,0/luanda\",\n\t\"1|n|04/19:03->05/31:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/29:01->10/25:02\": \"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london\",\n\t\"1|n\": \"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/05:04->09/27:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/05:03->09/27:02\": \"12/mcmurdo,12/south_pole,11/auckland\",\n\t\"12|s|01/12:03->11/08:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/05:03->04/05:02\": \"11/chatham\",\n\t\"11|s\": \"12/macquarie,11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n\t\"11.5|n|04/05:03->10/04:02\": \"11/norfolk\",\n\t\"10|s|04/05:03->10/04:02\": \"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap\",\n\t\"10.5|s|04/05:01->10/04:02\": \"4/lhi,4/lord_howe\",\n\t\"0|n|03/29:00->10/25:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu\",\n\t\"-9|n|03/08:02->11/01:02\": \"1/adak,1/atka\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/08:02->11/01:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/08:02->11/01:02\": \"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/hermosillo,1/phoenix\",\n\t\"-6|s|04/04:22->09/05:22\": \"7/easterisland,11/easter\",\n\t\"-6|n|04/05:02->10/25:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/08:02->11/01:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos\",\n\t\"-5|s\": \"1/lima,1/rio_branco,5/acre\",\n\t\"-5|n|04/05:02->10/25:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n|03/08:02->11/01:02\": \"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central\",\n\t\"-5|n\": \"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/04:24->09/06:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/21:24->10/04:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n|03/08:02->11/01:02\": \"1/detroit,1/fort_wayne,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,6/eastern\",\n\t\"-4|n|03/08:00->11/01:01\": \"1/havana\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east\",\n\t\"-3|n|03/08:02->11/01:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem\",\n\t\"-2|s\": \"5/denoronha\",\n\t\"-2|n|03/28:22->10/24:23\": \"1/godthab\",\n\t\"-2|n|03/08:02->11/01:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia\",\n\t\"-2.5|n|03/08:02->11/01:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\t'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //(sorry)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n} // console.log(all)\n// console.log(Object.keys(all).length)\n\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num > -13 && num < 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n var tz = str.trim();\n var split = str.split('/'); //support long timezones like 'America/Argentina/Rio_Gallegos'\n\n if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n tz = split[0] + '/' + split[1];\n }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //incriment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset$1 = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar isLeapYear = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months$1 = months.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1$1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{1,2})[\\-\\/]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = arr[3] || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months$1[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n var isNegative = offset < 0;\n var minute = '00'; //handle 5.5 → '5:30'\n\n if (Math.abs(offset % 1) === 0.5) {\n minute = '30';\n\n if (offset >= 0) {\n offset = Math.floor(offset);\n } else {\n offset = Math.ceil(offset);\n }\n }\n\n if (isNegative) {\n //handle negative sign\n offset *= -1;\n offset = fns.zeroPad(offset, 2);\n offset = '-' + offset;\n } else {\n offset = fns.zeroPad(offset, 2);\n offset = '+' + offset;\n }\n\n offset = offset + ':' + minute; //'Z' means 00\n\n if (offset === '+00:00') {\n offset = 'Z';\n }\n\n return offset;\n};\n\nvar _offset = isoOffset;\n\nvar format = {\n day: function day(s) {\n return fns.titleCase(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return fns.titleCase(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return fns.titleCase(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return fns.titleCase(months[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(fns.titleCase(months[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(fns.titleCase(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = fns.titleCase(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n return String(format[fmt](s));\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4);\n\nvar unixFmt = function unixFmt(s, str) {\n var chars = str.split(''); //combine consecutive chars, like 'yyyy' as one.\n\n var arr = [chars[0]];\n var quoteOn = false;\n\n for (var i = 1; i < chars.length; i += 1) {\n //support quoted substrings\n if (chars[i] === \"'\") {\n quoteOn = !quoteOn; //support '', meaning one tick\n\n if (quoteOn === true && chars[i + 1] && chars[i + 1] === \"'\") {\n quoteOn = true;\n } else {\n continue;\n }\n } //merge it with the last one\n\n\n if (quoteOn === true || chars[i] === arr[arr.length - 1][0]) {\n arr[arr.length - 1] += chars[i];\n } else {\n arr.push(chars[i]);\n }\n }\n\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$1 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$1.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff$1 = main;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$2 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$2.date = units$2.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n return units$2[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$2.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$2[unit]) {\n s = units$2[unit](s);\n s = s.add(1, unit);\n s = s.subtract(1, 'milliseconds');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units$3 = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff(d, unit) {\n return diff$1(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units$3.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods.inDST = methods.isDST;\nmethods.round = methods.nearest;\nmethods.each = methods.every;\nvar methods_1 = methods;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order.indexOf(unit);\n var arr = order.slice(n, order.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift;\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2})(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[3] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[3] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n }\n\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(0);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$1 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$1;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.date(s, num);\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff * 24, 'hours'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$3 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //don't go into last-year\n\n if (s.monthName() === 'december') {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december') {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i < 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$3;\n\nvar methods$4 = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods$4.milliseconds = methods$4.millisecond;\nmethods$4.seconds = methods$4.second;\nmethods$4.minutes = methods$4.minute;\nmethods$4.hours = methods$4.hour;\nmethods$4.hour24 = methods$4.hour;\nmethods$4.h12 = methods$4.hour12;\nmethods$4.h24 = methods$4.hour24;\nmethods$4.days = methods$4.day;\n\nvar addMethods = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods$4).forEach(function (k) {\n Space.prototype[k] = methods$4[k];\n });\n};\n\nvar query = addMethods;\n\nvar isLeapYear$2 = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear$2(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order$1 = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order$1.slice(0, 1),\n minute: order$1.slice(0, 2),\n quarterhour: order$1.slice(0, 2),\n hour: order$1.slice(0, 3),\n date: order$1.slice(0, 4),\n month: order$1.slice(0, 4),\n quarter: order$1.slice(0, 4),\n season: order$1.slice(0, 4),\n year: order$1,\n decade: order$1,\n century: order$1\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit); //move forward by the estimated milliseconds (rough)\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'season') {\n s.epoch += milliseconds.month * (num * 4);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } //ensure year has changed (leap-years)\n else if (unit === 'year' && s.year() === old.year()) {\n s.epoch += milliseconds.week;\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n walk_1(s, want);\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$1;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var a = this;\n\n if (!unit) {\n return null;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, '');\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$3;\n\nvar addMethods$4 = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months.set(data.months);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods$4;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.6.3';\n\nvar main$1 = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain$1.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain$1.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain$1.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain$1.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain$1.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n}; //find tz by time\n\n\nmain$1.whereIts = whereIts_1;\nmain$1.version = _version; //aliases:\n\nmain$1.plugin = main$1.extend;\nvar src = main$1;\n\nexport default src;\n","// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n// generated humbly from https://github.com/spencermountain/spacetime-informal\nconst spacetime = require('spacetime')\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n //europe\n 'british summer time': europe + 'London',\n bst: europe + 'London',\n 'british time': europe + 'London',\n 'britain time': europe + 'London',\n 'irish summer time': europe + 'Dublin',\n 'irish time': europe + 'Dublin',\n ireland: europe + 'Dublin',\n 'central european time': europe + 'Berlin',\n cet: europe + 'Berlin',\n 'central european summer time': europe + 'Berlin',\n cest: europe + 'Berlin',\n 'central europe': europe + 'Berlin',\n 'eastern european time': europe + 'Riga',\n eet: europe + 'Riga',\n 'eastern european summer time': europe + 'Riga',\n eest: europe + 'Riga',\n 'eastern europe time': europe + 'Riga',\n 'western european time': europe + 'Lisbon',\n // wet: europe+'Lisbon',\n 'western european summer time': europe + 'Lisbon',\n // west: europe+'Lisbon',\n 'western europe': europe + 'Lisbon',\n 'turkey standard time': europe + 'Istanbul',\n trt: europe + 'Istanbul',\n 'turkish time': europe + 'Istanbul',\n\n //africa\n etc: africa + 'Freetown',\n utc: africa + 'Freetown',\n 'greenwich standard time': africa + 'Freetown',\n gmt: africa + 'Freetown',\n 'east africa time': africa + 'Nairobi',\n // eat: africa+'Nairobi',\n 'east african time': africa + 'Nairobi',\n 'eastern africa time': africa + 'Nairobi',\n 'central africa time': africa + 'Khartoum',\n // cat: africa+'Khartoum',\n 'central african time': africa + 'Khartoum',\n 'south africa standard time': africa + 'Johannesburg',\n sast: africa + 'Johannesburg',\n 'southern africa': africa + 'Johannesburg',\n 'south african': africa + 'Johannesburg',\n 'west africa standard time': africa + 'Lagos',\n // wat: africa+'Lagos',\n 'western africa time': africa + 'Lagos',\n 'west african time': africa + 'Lagos',\n\n 'australian central standard time': aus + 'Adelaide',\n acst: aus + 'Adelaide',\n 'australian central daylight time': aus + 'Adelaide',\n acdt: aus + 'Adelaide',\n 'australia central': aus + 'Adelaide',\n 'australian eastern standard time': aus + 'Brisbane',\n aest: aus + 'Brisbane',\n 'australian eastern daylight time': aus + 'Brisbane',\n aedt: aus + 'Brisbane',\n 'australia east': aus + 'Brisbane',\n 'australian western standard time': aus + 'Perth',\n awst: aus + 'Perth',\n 'australian western daylight time': aus + 'Perth',\n awdt: aus + 'Perth',\n 'australia west': aus + 'Perth',\n 'australian central western standard time': aus + 'Eucla',\n acwst: aus + 'Eucla',\n 'australia central west': aus + 'Eucla',\n 'lord howe standard time': aus + 'Lord_Howe',\n lhst: aus + 'Lord_Howe',\n 'lord howe daylight time': aus + 'Lord_Howe',\n lhdt: aus + 'Lord_Howe',\n 'russian standard time': europe + 'Moscow',\n msk: europe + 'Moscow',\n russian: europe + 'Moscow',\n\n //america\n 'central standard time': america + 'Chicago',\n 'central time': america + 'Chicago',\n cst: america + 'Havana',\n 'central daylight time': america + 'Chicago',\n cdt: america + 'Havana',\n 'mountain standard time': america + 'Denver',\n 'mountain time': america + 'Denver',\n mst: america + 'Denver',\n 'mountain daylight time': america + 'Denver',\n mdt: america + 'Denver',\n 'atlantic standard time': america + 'Halifax',\n 'atlantic time': america + 'Halifax',\n ast: asia + 'Baghdad',\n 'atlantic daylight time': america + 'Halifax',\n adt: america + 'Halifax',\n 'eastern standard time': america + 'New_York',\n 'eastern time': america + 'New_York',\n est: america + 'New_York',\n 'eastern daylight time': america + 'New_York',\n edt: america + 'New_York',\n 'pacific time': america + 'Los_Angeles',\n 'pacific standard time': america + 'Los_Angeles',\n pst: america + 'Los_Angeles',\n 'pacific daylight time': america + 'Los_Angeles',\n pdt: america + 'Los_Angeles',\n 'alaskan standard time': america + 'Anchorage',\n 'alaskan time': america + 'Anchorage',\n ahst: america + 'Anchorage',\n 'alaskan daylight time': america + 'Anchorage',\n ahdt: america + 'Anchorage',\n 'hawaiian standard time': pac + 'Honolulu',\n 'hawaiian time': pac + 'Honolulu',\n hst: pac + 'Honolulu',\n 'aleutian time': pac + 'Honolulu',\n 'hawaii time': pac + 'Honolulu',\n 'newfoundland standard time': america + 'St_Johns',\n 'newfoundland time': america + 'St_Johns',\n nst: america + 'St_Johns',\n 'newfoundland daylight time': america + 'St_Johns',\n ndt: america + 'St_Johns',\n 'brazil time': america + 'Sao_Paulo',\n brt: america + 'Sao_Paulo',\n brasília: america + 'Sao_Paulo',\n brasilia: america + 'Sao_Paulo',\n 'brazilian time': america + 'Sao_Paulo',\n 'argentina time': america + 'Buenos_Aires',\n // art: a+'Buenos_Aires',\n 'argentinian time': america + 'Buenos_Aires',\n 'amazon time': america + 'Manaus',\n amt: america + 'Manaus',\n 'amazonian time': america + 'Manaus',\n 'easter island standard time': 'Chile/Easterisland',\n east: 'Chile/Easterisland',\n 'easter island summer time': 'Chile/Easterisland',\n easst: 'Chile/Easterisland',\n 'venezuelan standard time': america + 'Caracas',\n 'venezuelan time': america + 'Caracas',\n vet: america + 'Caracas',\n 'venezuela time': america + 'Caracas',\n 'paraguay time': america + 'Asuncion',\n pyt: america + 'Asuncion',\n 'paraguay summer time': america + 'Asuncion',\n pyst: america + 'Asuncion',\n 'cuba standard time': america + 'Havana',\n 'cuba time': america + 'Havana',\n 'cuba daylight time': america + 'Havana',\n 'cuban time': america + 'Havana',\n 'bolivia time': america + 'La_Paz',\n // bot: a+'La_Paz',\n 'bolivian time': america + 'La_Paz',\n 'colombia time': america + 'Bogota',\n cot: america + 'Bogota',\n 'colombian time': america + 'Bogota',\n 'acre time': america + 'Eirunepe',\n // act: a+'Eirunepe',\n 'peru time': america + 'Lima',\n // pet: a+'Lima',\n 'chile standard time': america + 'Punta_Arenas',\n 'chile time': america + 'Punta_Arenas',\n clst: america + 'Punta_Arenas',\n 'chile summer time': america + 'Punta_Arenas',\n cldt: america + 'Punta_Arenas',\n 'uruguay time': america + 'Montevideo',\n uyt: america + 'Montevideo',\n\n //asia\n ist: asia + 'Jerusalem',\n 'arabic standard time': asia + 'Baghdad',\n 'arabic time': asia + 'Baghdad',\n 'arab time': asia + 'Baghdad',\n 'iran standard time': asia + 'Tehran',\n 'iran time': asia + 'Tehran',\n irst: asia + 'Tehran',\n 'iran daylight time': asia + 'Tehran',\n irdt: asia + 'Tehran',\n iranian: asia + 'Tehran',\n 'pakistan standard time': asia + 'Karachi',\n 'pakistan time': asia + 'Karachi',\n pkt: asia + 'Karachi',\n 'india standard time': asia + 'Kolkata',\n 'indian time': asia + 'Kolkata',\n 'indochina time': asia + 'Bangkok',\n ict: asia + 'Bangkok',\n 'south east asia': asia + 'Bangkok',\n 'china standard time': asia + 'Shanghai',\n ct: asia + 'Shanghai',\n 'chinese time': asia + 'Shanghai',\n 'alma-ata time': asia + 'Almaty',\n almt: asia + 'Almaty',\n 'oral time': asia + 'Oral',\n 'orat time': asia + 'Oral',\n 'yakutsk time': asia + 'Yakutsk',\n yakt: asia + 'Yakutsk',\n 'gulf standard time': asia + 'Dubai',\n 'gulf time': asia + 'Dubai',\n gst: asia + 'Dubai',\n uae: asia + 'Dubai',\n 'hong kong time': asia + 'Hong_Kong',\n hkt: asia + 'Hong_Kong',\n 'western indonesian time': asia + 'Jakarta',\n wib: asia + 'Jakarta',\n 'indonesia time': asia + 'Jakarta',\n 'central indonesian time': asia + 'Makassar',\n wita: asia + 'Makassar',\n 'israel daylight time': asia + 'Jerusalem',\n idt: asia + 'Jerusalem',\n 'israel standard time': asia + 'Jerusalem',\n 'israel time': asia + 'Jerusalem',\n israeli: asia + 'Jerusalem',\n 'krasnoyarsk time': asia + 'Krasnoyarsk',\n krat: asia + 'Krasnoyarsk',\n 'malaysia time': asia + 'Kuala_Lumpur',\n myt: asia + 'Kuala_Lumpur',\n 'singapore time': asia + 'Singapore',\n sgt: asia + 'Singapore',\n 'korea standard time': asia + 'Seoul',\n 'korea time': asia + 'Seoul',\n kst: asia + 'Seoul',\n 'korean time': asia + 'Seoul',\n 'uzbekistan time': asia + 'Samarkand',\n uzt: asia + 'Samarkand',\n 'vladivostok time': asia + 'Vladivostok',\n vlat: asia + 'Vladivostok',\n\n //indian\n 'maldives time': 'Indian/Maldives',\n mvt: 'Indian/Maldives',\n 'mauritius time': 'Indian/Mauritius',\n mut: 'Indian/Mauritius',\n\n // pacific\n 'marshall islands time': pac + 'Kwajalein',\n mht: pac + 'Kwajalein',\n 'samoa standard time': pac + 'Midway',\n sst: pac + 'Midway',\n 'somoan time': pac + 'Midway',\n 'chamorro standard time': pac + 'Guam',\n chst: pac + 'Guam',\n 'papua new guinea time': pac + 'Bougainville',\n pgt: pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nlet iana = spacetime().timezones\nlet formal = Object.keys(iana).reduce((h, k) => {\n h[k] = k\n return h\n}, {})\nmodule.exports = Object.assign({}, informal, formal)\n","module.exports = [\n 'weekday',\n\n 'summer',\n 'winter',\n 'autumn',\n\n 'some day',\n 'one day',\n 'all day',\n 'some point',\n\n 'eod',\n 'eom',\n 'standard time',\n 'daylight time',\n]\n","module.exports = [\n 'centuries',\n 'century',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'millisecond',\n 'milliseconds',\n 'minute',\n 'minutes',\n 'month',\n 'months',\n 'seconds',\n 'week',\n 'weeks',\n 'year',\n 'years',\n]\n","module.exports = [\n 'all hallows eve',\n 'all saints day',\n 'all sts day',\n 'april fools',\n 'armistice day',\n 'australia day',\n 'bastille day',\n 'boxing day',\n 'canada day',\n 'christmas eve',\n 'christmas',\n 'cinco de mayo',\n 'day of the dead',\n 'dia de muertos',\n 'dieciseis de septiembre',\n 'emancipation day',\n 'grito de dolores',\n 'groundhog day',\n 'halloween',\n 'harvey milk day',\n 'inauguration day',\n 'independence day',\n 'independents day',\n 'juneteenth',\n 'labour day',\n 'national freedom day',\n 'national nurses day',\n 'new years eve',\n 'new years',\n 'purple heart day',\n 'rememberance day',\n 'rosa parks day',\n 'saint andrews day',\n 'saint patricks day',\n 'saint stephens day',\n 'saint valentines day',\n 'st andrews day',\n 'st patricks day',\n 'st stephens day',\n 'st valentines day ',\n 'valentines day',\n 'valentines',\n 'veterans day',\n 'victoria day',\n 'womens equality day',\n 'xmas',\n // Fixed religious and cultural holidays\n // Catholic + Christian\n 'epiphany',\n 'orthodox christmas day',\n 'orthodox new year',\n 'assumption of mary',\n 'all souls day',\n 'feast of the immaculate conception',\n 'feast of our lady of guadalupe',\n\n // Kwanzaa\n 'kwanzaa',\n // Pagan / metal 🤘\n 'imbolc',\n 'beltaine',\n 'lughnassadh',\n 'samhain',\n 'martin luther king day',\n 'mlk day',\n 'presidents day',\n 'mardi gras',\n 'tax day',\n 'commonwealth day',\n 'mothers day',\n 'memorial day',\n 'fathers day',\n 'columbus day',\n 'indigenous peoples day',\n 'canadian thanksgiving',\n 'election day',\n 'thanksgiving',\n 't-day',\n 'turkey day',\n 'black friday',\n 'cyber monday',\n // Astronomical religious and cultural holidays\n 'ash wednesday',\n 'palm sunday',\n 'maundy thursday',\n 'good friday',\n 'holy saturday',\n 'easter',\n 'easter sunday',\n 'easter monday',\n 'orthodox good friday',\n 'orthodox holy saturday',\n 'orthodox easter',\n 'orthodox easter monday',\n 'ascension day',\n 'pentecost',\n 'whitsunday',\n 'whit sunday',\n 'whit monday',\n 'trinity sunday',\n 'corpus christi',\n 'advent',\n // Jewish\n 'tu bishvat',\n 'tu bshevat',\n 'purim',\n 'passover',\n 'yom hashoah',\n 'lag baomer',\n 'shavuot',\n 'tisha bav',\n 'rosh hashana',\n 'yom kippur',\n 'sukkot',\n 'shmini atzeret',\n 'simchat torah',\n 'chanukah',\n 'hanukkah',\n // Muslim\n 'isra and miraj',\n 'lailat al-qadr',\n 'eid al-fitr',\n 'id al-Fitr',\n 'eid ul-Fitr',\n 'ramadan',\n 'eid al-adha',\n 'muharram',\n 'the prophets birthday',\n 'ostara',\n 'march equinox',\n 'vernal equinox',\n 'litha',\n 'june solistice',\n 'summer solistice',\n 'mabon',\n 'september equinox',\n 'fall equinox',\n 'autumnal equinox',\n 'yule',\n 'december solstice',\n 'winter solstice',\n // Additional important holidays\n 'chinese new year',\n 'diwali',\n]\n","module.exports = [\n 'noon',\n 'midnight',\n 'now',\n 'morning',\n 'tonight',\n 'evening',\n 'afternoon',\n 'night',\n 'breakfast time',\n 'lunchtime',\n 'dinnertime',\n 'sometime',\n 'eod',\n 'oclock',\n 'oclock',\n 'all day',\n 'at night',\n]\n","let lex = {}\nconst timezones = require('../_timezones')\n\nconst data = [\n [require('./dates'), '#Date'],\n [require('./durations'), '#Duration'],\n [require('./holidays'), '#Holiday'],\n [require('./times'), '#Time'],\n [Object.keys(timezones), '#Timezone'],\n]\ndata.forEach(a => {\n for (let i = 0; i < a[0].length; i++) {\n lex[a[0][i]] = a[1]\n }\n})\n\nmodule.exports = lex\n","const normalize = function(doc) {\n doc = doc.clone()\n\n if (!doc.numbers) {\n console.warn(\"Compromise: compromise-dates cannot find plugin dependency 'compromise-number'\")\n } else {\n // convert 'two' to 2\n let num = doc.numbers()\n num.toNumber()\n num.toCardinal()\n }\n // remove adverbs\n doc.adverbs().remove()\n return doc\n}\nmodule.exports = normalize\n","const knownUnits = {\n second: true,\n minute: true,\n hour: true,\n day: true,\n week: true,\n month: true,\n season: true,\n quarter: true,\n year: true,\n}\n\n//turn '5 weeks before' to {weeks:5}\nconst parseShift = function (doc) {\n let result = {}\n let m = doc.match('#DateShift+')\n if (m.found === false) {\n return result\n }\n m.match('#Cardinal #Duration').forEach((ts) => {\n let num = ts.match('#Cardinal').text('normal')\n num = parseFloat(num)\n if (num && typeof num === 'number') {\n let unit = ts.match('#Duration').text('normal')\n unit = unit.replace(/s$/, '')\n if (unit && knownUnits.hasOwnProperty(unit)) {\n result[unit] = num\n }\n }\n })\n //is it 2 weeks ago? → -2\n if (m.has('(before|ago)$') === true) {\n Object.keys(result).forEach((k) => (result[k] *= -1))\n }\n // finally, remove it from our text\n doc.remove('#DateShift')\n return result\n}\nmodule.exports = parseShift\n","const spacetime = require('spacetime')\n\nconst hardCoded = {\n daybreak: '7:00am', //ergh\n breakfast: '8:00am',\n morning: '9:00am',\n noon: '12:00pm',\n afternoon: '2:00pm',\n lunchtime: '12:00pm',\n evening: '6:00pm',\n dinnertime: '6:00pm',\n night: '8:00pm',\n midnight: '12:00am',\n}\n\nconst halfPast = function (m, s) {\n let hour = m.match('#Cardinal$').text('reduced')\n\n let term = m.match('(half|quarter|25|15|10|5)')\n let mins = term.text('reduced')\n if (term.has('half')) {\n mins = '30'\n }\n if (term.has('quarter')) {\n mins = '15'\n }\n let behind = m.has('to')\n // apply it\n s = s.hour(hour)\n s = s.startOf('hour')\n if (behind) {\n s = s.subtract(mins, 'minutes')\n } else {\n s = s.add(mins, 'minutes')\n }\n return s\n}\n\nconst parseTime = function (doc, context) {\n let time = doc.match('(at|by|for|before)? #Time+')\n if (time.found) {\n doc.remove(time)\n }\n // get the main part of the time\n time = time.not('(at|by|for|before|sharp)')\n time = time.not('on the dot')\n let s = spacetime.now(context.timezone)\n let now = s.clone()\n\n // check for known-times (like 'today')\n let timeStr = time.text('reduced')\n if (hardCoded.hasOwnProperty(timeStr)) {\n return hardCoded[timeStr]\n }\n\n // '5 oclock'\n let m = time.match('^#Cardinal oclock (am|pm)?')\n if (m.found) {\n m = m.not('oclock')\n s = s.hour(m.text('reduced'))\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n\n // 'quarter to two'\n m = time.match('(half|quarter|25|15|10|5) (past|after|to) #Cardinal')\n if (m.found) {\n s = halfPast(m, s)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n }\n // parse random a time like '4:54pm'\n let str = time.text('reduced')\n s = s.time(str)\n if (s.isValid() && !s.isEqual(now)) {\n return s.time()\n }\n return null\n}\nmodule.exports = parseTime\n","// interpret 'this halloween' or 'next june'\nconst parseRelative = function(doc) {\n let rel = null\n if (doc.has('^this? (next|upcoming)')) {\n rel = 'next'\n }\n if (doc.has('^this? (last|previous)')) {\n rel = 'last'\n }\n if (doc.has('^(this|current)')) {\n rel = 'this'\n }\n // finally, remove it from our text\n doc.remove('^(this|current|next|upcoming|last|previous)')\n return rel\n}\nmodule.exports = parseRelative\n","const informal = require('../../data/_timezones')\n\nconst isOffset = /(\\-?[0-9]+)h(rs)?/i\nconst isNumber = /(\\-?[0-9]+)/\nconst utcOffset = /utc([\\-+]?[0-9]+)/i\nconst gmtOffset = /gmt([\\-+]?[0-9]+)/i\n\nconst toIana = function(num) {\n num = Number(num)\n if (num > -13 && num < 13) {\n num = num * -1 //it's opposite!\n num = (num > 0 ? '+' : '') + num //add plus sign\n return 'Etc/GMT' + num\n }\n return null\n}\n\nconst parseOffset = function(tz) {\n // '+5hrs'\n let m = tz.match(isOffset)\n if (m !== null) {\n return toIana(m[1])\n }\n // 'utc+5'\n m = tz.match(utcOffset)\n if (m !== null) {\n return toIana(m[1])\n }\n // 'GMT-5' (not opposite)\n m = tz.match(gmtOffset)\n if (m !== null) {\n let num = Number(m[1]) * -1\n return toIana(num)\n }\n // '+5'\n m = tz.match(isNumber)\n if (m !== null) {\n return toIana(m[1])\n }\n return null\n}\n\nconst parseTimezone = function(doc) {\n let m = doc.match('#Timezone+')\n //remove prepositions\n m = m.remove('(in|for|by|near|at)')\n let str = m.text('reduced')\n\n // remove it from our doc, either way\n doc.remove('#Timezone+')\n\n // check our list of informal tz names\n if (informal.hasOwnProperty(str)) {\n return informal[str]\n }\n let tz = parseOffset(str)\n if (tz) {\n return tz\n }\n\n return null\n}\nmodule.exports = parseTimezone\n","const spacetime = require('spacetime')\n\nclass Unit {\n constructor(input, unit, context) {\n this.unit = unit || 'day'\n context = context || {}\n let today = {}\n if (context.today) {\n today = {\n date: context.today.date(),\n month: context.today.month(),\n year: context.today.year(),\n }\n }\n // set it to the beginning of the given unit\n let d = spacetime(input, context.timezone, { today: today })\n\n // set to beginning\n if (d.isValid()) {\n d = d.startOf(this.unit)\n }\n Object.defineProperty(this, 'd', {\n enumerable: false,\n writable: true,\n value: d,\n })\n Object.defineProperty(this, 'context', {\n enumerable: false,\n writable: true,\n value: context,\n })\n }\n // make a new one\n clone() {\n let d = new Unit(this.d, this.unit, this.context)\n return d\n }\n log() {\n console.log('--')\n this.d.log()\n console.log('\\n')\n return this\n }\n applyShift(obj = {}) {\n Object.keys(obj).forEach((k) => {\n this.d = this.d.add(obj[k], k)\n })\n return this\n }\n applyTime(str) {\n if (str) {\n this.d = this.d.time(str)\n } else {\n this.d = this.d.startOf('day') //zero-out time\n }\n return this\n }\n format(fmt) {\n return this.d.format(fmt)\n }\n start() {\n this.d = this.d.startOf(this.unit)\n return this\n }\n end() {\n this.d = this.d.endOf(this.unit)\n return this\n }\n // 'before 2019'\n before() {\n this.d = spacetime.now(this.context.timezone, { today: this.context.today }) // ???\n return this\n }\n // 'after 2019'\n after() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'next june' 'next tuesday'\n next() {\n this.d = this.d.add(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n // tricky: 'last june' 'last tuesday'\n last() {\n this.d = this.d.minus(1, this.unit)\n this.d = this.d.startOf(this.unit)\n return this\n }\n}\nmodule.exports = Unit\n","const spacetime = require('spacetime')\nconst Unit = require('./Unit')\n\nclass Day extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n }\n}\nclass Month extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'month'\n }\n}\nclass Quarter extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'quarter'\n }\n}\nclass Year extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'year'\n }\n}\nclass WeekDay extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'week'\n // is the input just a weekday?\n if (typeof input === 'string') {\n this.d = spacetime(context.today, context.timezone)\n this.d = this.d.day(input)\n // assume a wednesday in the future\n if (this.d.isBefore(context.today)) {\n this.d = this.d.add(7, 'days')\n }\n } else {\n this.d = input\n }\n this.weekDay = this.d.dayName()\n }\n clone() {\n //overloaded method\n return new WeekDay(this.d, this.unit, this.context)\n }\n end() {\n //overloaded method\n this.d = this.d.endOf('day')\n return this\n }\n next() {\n this.d = this.d.add(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n last() {\n this.d = this.d.minus(7, 'days')\n this.d = this.d.day(this.weekDay)\n return this\n }\n}\n// like 'feb 2'\nclass CalendarDate extends Unit {\n constructor(input, unit, context) {\n super(input, unit, context)\n this.unit = 'day'\n }\n next() {\n this.d = this.d.add(1, 'year')\n return this\n }\n last() {\n this.d = this.d.minus(1, 'year')\n return this\n }\n}\n\nmodule.exports = {\n Unit: Unit,\n Day: Day,\n Month: Month,\n Quarter: Quarter,\n Year: Year,\n WeekDay: WeekDay,\n CalendarDate: CalendarDate,\n}\n","const { Unit } = require('../_units')\n\nconst onlySection = function(doc, context, section) {\n let d = null\n if (doc.found === false) {\n // do we have just a time?\n if (section.time !== null) {\n d = new Unit(context.today, null, context) // choose today\n }\n //do we just have a shift?\n if (Object.keys(section.shift).length > 0) {\n d = new Unit(context.today, null, context) // choose today\n }\n }\n return d\n}\nmodule.exports = onlySection\n","const units = require('../_units')\nconst mapping = {\n week: units.Week,\n month: units.Month,\n quarter: units.Quarter,\n year: units.Year,\n season: units.Season,\n}\n\n// when a unit of time is spoken of as 'this month' - instead of 'february'\nconst namedUnit = function (doc, context) {\n //this month, last quarter, next year\n let m = doc.match('^(weekday|week|month|quarter|season|year)$')\n if (m.found === true) {\n let str = m.lastTerm().text('reduced')\n if (mapping.hasOwnProperty(str)) {\n let Model = mapping[str]\n if (!Model) {\n return null\n }\n let unit = new Model(null, str, context)\n return unit\n }\n }\n\n //try this version - 'next friday, last thursday'\n m = doc.match('^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$')\n if (m.found === true) {\n let str = m.lastTerm().text('reduced')\n let unit = new units.WeekDay(str, null, context)\n return unit\n }\n return null\n}\nmodule.exports = namedUnit\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('spacetime')) :\n typeof define === 'function' && define.amd ? define(['spacetime'], factory) :\n (global = global || self, global.spacetimeHoliday = factory(global.spacetime));\n}(this, function (spacetime) { 'use strict';\n\n spacetime = spacetime && spacetime.hasOwnProperty('default') ? spacetime['default'] : spacetime;\n\n //yep,\n var jan = 'january';\n var feb = 'february';\n var mar = 'march';\n var apr = 'april';\n var may = 'may';\n var jun = 'june';\n var jul = 'july';\n var aug = 'august';\n var sep = 'september';\n var oct = 'october';\n var nov = 'november';\n var dec = 'december';\n var fixedHolidays = {\n 'new years eve': [dec, 31],\n 'new years': [jan, 1],\n 'new years day': [jan, 1],\n 'inauguration day': [jan, 20],\n 'australia day': [jan, 26],\n 'national freedom day': [feb, 1],\n 'groundhog day': [feb, 2],\n 'rosa parks day': [feb, 4],\n 'valentines day': [feb, 14],\n 'saint valentines day': [feb, 14],\n 'st valentines day ': [feb, 14],\n 'saint patricks day': [mar, 17],\n 'st patricks day': [mar, 17],\n 'april fools': [apr, 1],\n 'april fools day': [apr, 1],\n 'emancipation day': [apr, 16],\n 'tax day': [apr, 15],\n //US\n 'labour day': [may, 1],\n 'cinco de mayo': [may, 5],\n 'national nurses day': [may, 6],\n 'harvey milk day': [may, 22],\n 'victoria day': [may, 24],\n juneteenth: [jun, 19],\n 'canada day': [jul, 1],\n 'independence day': [jul, 4],\n 'independents day': [jul, 4],\n 'bastille day': [jul, 14],\n 'purple heart day': [aug, 7],\n 'womens equality day': [aug, 26],\n '16 de septiembre': [sep, 16],\n 'dieciseis de septiembre': [sep, 16],\n 'grito de dolores': [sep, 16],\n halloween: [oct, 31],\n 'all hallows eve': [oct, 31],\n 'day of the dead': [oct, 31],\n // Ranged holiday [nov, 2],\n 'dia de muertos': [oct, 31],\n // Ranged holiday [nov, 2],\n 'veterans day': [nov, 11],\n 'st andrews day': [nov, 30],\n 'saint andrews day': [nov, 30],\n 'all saints day': [nov, 1],\n 'all sts day': [nov, 1],\n 'armistice day': [nov, 11],\n 'rememberance day': [nov, 11],\n 'christmas eve': [dec, 24],\n christmas: [dec, 25],\n xmas: [dec, 25],\n 'boxing day': [dec, 26],\n 'st stephens day': [dec, 26],\n 'saint stephens day': [dec, 26],\n // Fixed religious and cultural holidays\n // Catholic + Christian\n epiphany: [jan, 6],\n 'orthodox christmas day': [jan, 7],\n 'orthodox new year': [jan, 14],\n 'assumption of mary': [aug, 15],\n 'all souls day': [nov, 2],\n 'feast of the immaculate conception': [dec, 8],\n 'feast of our lady of guadalupe': [dec, 12],\n // Kwanzaa\n kwanzaa: [dec, 26],\n // Ranged holiday [jan, 1],\n // Pagan / metal 🤘\n imbolc: [feb, 2],\n beltaine: [may, 1],\n lughnassadh: [aug, 1],\n samhain: [oct, 31]\n };\n\n var fixedDates = function fixedDates(str, normal, year) {\n if (fixedHolidays.hasOwnProperty(str) || fixedHolidays.hasOwnProperty(normal)) {\n var arr = fixedHolidays[str] || fixedHolidays[normal] || [];\n var s = spacetime.now();\n s = s.year(year);\n s = s.startOf('year');\n s = s.month(arr[0]);\n s = s.date(arr[1]);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _01FixedDates = fixedDates;\n\n //these are holidays on the 'nth weekday of month'\n var jan$1 = 'january';\n var feb$1 = 'february';\n var mar$1 = 'march'; // const apr = 'april'\n\n var may$1 = 'may';\n var jun$1 = 'june'; // const jul = 'july'\n // const aug = 'august'\n\n var sep$1 = 'september';\n var oct$1 = 'october';\n var nov$1 = 'november'; // const dec = 'december'\n\n var mon = 'monday'; // const tues = 'tuesday'\n // const wed = 'wednesday'\n\n var thurs = 'thursday';\n var fri = 'friday'; // const sat = 'saturday'\n\n var sun = 'sunday';\n var holidays = {\n 'martin luther king day': [3, mon, jan$1],\n //[third monday in january],\n 'presidents day': [3, mon, feb$1],\n //[third monday in february],\n 'commonwealth day': [2, mon, mar$1],\n //[second monday in march],\n 'mothers day': [2, sun, may$1],\n //[second Sunday in May],\n 'fathers day': [3, sun, jun$1],\n //[third Sunday in June],\n 'labor day': [1, mon, sep$1],\n //[first monday in september],\n 'columbus day': [2, mon, oct$1],\n //[second monday in october],\n 'canadian thanksgiving': [2, mon, oct$1],\n //[second monday in october],\n thanksgiving: [4, thurs, nov$1],\n // [fourth Thursday in November],\n 'black friday': [4, fri, nov$1] //[fourth friday in november],\n // 'memorial day': [may], //[last monday in may],\n // 'us election': [nov], // [Tuesday following the first Monday in November],\n // 'cyber monday': [nov]\n // 'advent': [] // fourth Sunday before Christmas\n\n }; // add aliases\n\n holidays['turday day'] = holidays.thanksgiving;\n holidays['indigenous peoples day'] = holidays['columbus day'];\n holidays['mlk day'] = holidays['martin luther king day'];\n var calendarHolidays = holidays;\n\n var fixedDates$1 = function fixedDates(str, normal, year) {\n if (calendarHolidays.hasOwnProperty(str) || calendarHolidays.hasOwnProperty(normal)) {\n var arr = calendarHolidays[str] || calendarHolidays[normal] || [];\n var s = spacetime.now();\n s = s.year(year); // [3rd, 'monday', 'january']\n\n s = s.month(arr[2]);\n s = s.startOf('month'); // make it january\n\n var month = s.month(); // make it the 1st monday\n\n s = s.day(arr[1]);\n\n if (s.month() !== month) {\n s = s.add(1, 'week');\n } // make it nth monday\n\n\n if (arr[0] > 1) {\n s = s.add(arr[0] - 1, 'week');\n }\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _02NthWeekday = fixedDates$1;\n\n // https://www.timeanddate.com/calendar/determining-easter-date.html\n var dates = {\n easter: 0,\n 'ash wednesday': -46,\n // (46 days before easter)\n 'palm sunday': 7,\n // (1 week before easter)\n 'maundy thursday': -3,\n // (3 days before easter)\n 'good friday': -2,\n // (2 days before easter)\n 'holy saturday': -1,\n // (1 days before easter)\n 'easter saturday': -1,\n // (1 day before easter)\n 'easter monday': 1,\n // (1 day after easter)\n 'ascension day': 39,\n // (39 days after easter)\n 'whit sunday': 49,\n // / pentecost (49 days after easter)\n 'whit monday': 50,\n // (50 days after easter)\n 'trinity sunday': 65,\n // (56 days after easter)\n 'corpus christi': 60,\n // (60 days after easter)\n 'mardi gras': -47 //(47 days before easter)\n\n };\n dates['easter sunday'] = dates.easter;\n dates['pentecost'] = dates['whit sunday'];\n dates['whitsun'] = dates['whit sunday'];\n var easterHolidays = dates;\n\n // by John Dyer\n // based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php\n var calcEaster = function calcEaster(year) {\n var f = Math.floor,\n // Golden Number - 1\n G = year % 19,\n C = f(year / 100),\n // related to Epact\n H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30,\n // number of days from 21 March to the Paschal full moon\n I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)),\n // weekday for the Paschal full moon\n J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7,\n // number of days from 21 March to the Sunday on or before the Paschal full moon\n L = I - J,\n month = 3 + f((L + 40) / 44),\n date = L + 28 - 31 * f(month / 4);\n month = month === 4 ? 'April' : 'March';\n return month + ' ' + date;\n };\n\n var calcEaster_1 = calcEaster;\n\n var easterDates = function easterDates(str, normal, year) {\n if (easterHolidays.hasOwnProperty(str) || easterHolidays.hasOwnProperty(normal)) {\n var days = easterHolidays[str] || easterHolidays[normal] || [];\n var date = calcEaster_1(year);\n\n if (!date) {\n return null; //no easter for this year\n }\n\n var e = spacetime(date);\n e = e.year(year);\n var s = e.add(days, 'day');\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _03EasterDates = easterDates;\n\n // http://www.astropixels.com/ephemeris/soleq2001.html\n // years 2000-2100\n var exceptions = {\n spring: [2003, 2007, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2077, 2080, 2081, 2084, 2085, 2088, 2089, 2092, 2093, 2096, 2097],\n summer: [2021, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2041, 2044, 2045, 2048, 2049, 2052, 2053, 2056, 2057, 2060, 2061, 2064, 2065, 2068, 2069, 2070, 2072, 2073, 2074, 2076, 2077, 2078, 2080, 2081, 2082, 2084, 2085, 2086, 2088, 2089, 2090, 2092, 2093, 2094, 2096, 2097, 2098, 2099],\n fall: [2002, 2003, 2004, 2006, 2007, 2010, 2011, 2014, 2015, 2018, 2019, 2022, 2023, 2026, 2027, 2031, 2035, 2039, 2043, 2047, 2051, 2055, 2059, 2092, 2096],\n winter: [2002, 2003, 2006, 2007, 2011, 2015, 2019, 2023, 2027, 2031, 2035, 2039, 2043, 2080, 2084, 2088, 2092, 2096]\n };\n var winter20th = [2080, 2084, 2088, 2092, 2096];\n\n var calcSeasons = function calcSeasons(year) {\n // most common defaults\n var res = {\n spring: 'March 20 ' + year,\n summer: 'June 21 ' + year,\n fall: 'Sept 22 ' + year,\n winter: 'Dec 21 ' + year\n };\n\n if (exceptions.spring.indexOf(year) !== -1) {\n res.spring = 'March 19 ' + year;\n }\n\n if (exceptions.summer.indexOf(year) !== -1) {\n res.summer = 'June 20 ' + year;\n }\n\n if (exceptions.fall.indexOf(year) !== -1) {\n res.fall = 'Sept 21 ' + year;\n } // winter can be 20th, 21st, or 22nd\n\n\n if (exceptions.winter.indexOf(year) !== -1) {\n res.winter = 'Dec 22 ' + year;\n }\n\n if (winter20th.indexOf(year) !== -1) {\n res.winter = 'Dec 20 ' + year;\n }\n\n return res;\n };\n\n var seasons = calcSeasons;\n\n // these are properly calculated in ./lib/seasons\n var dates$1 = {\n 'spring equinox': 'spring',\n 'summer solistice': 'summer',\n 'fall equinox': 'fall',\n 'winter solstice': 'winter'\n }; // aliases\n\n dates$1['march equinox'] = dates$1['spring equinox'];\n dates$1['vernal equinox'] = dates$1['spring equinox'];\n dates$1['ostara'] = dates$1['spring equinox'];\n dates$1['june solstice'] = dates$1['summer solistice'];\n dates$1['litha'] = dates$1['summer solistice'];\n dates$1['autumn equinox'] = dates$1['fall equinox'];\n dates$1['autumnal equinox'] = dates$1['fall equinox'];\n dates$1['september equinox'] = dates$1['fall equinox'];\n dates$1['sept equinox'] = dates$1['fall equinox'];\n dates$1['mabon'] = dates$1['fall equinox'];\n dates$1['december solstice'] = dates$1['winter solistice'];\n dates$1['dec solstice'] = dates$1['winter solistice'];\n dates$1['yule'] = dates$1['winter solistice'];\n var astroHolidays = dates$1;\n\n var astroDates = function astroDates(str, normal, year) {\n if (astroHolidays.hasOwnProperty(str) || astroHolidays.hasOwnProperty(normal)) {\n var season = astroHolidays[str] || astroHolidays[normal];\n var seasons$1 = seasons(year);\n\n if (!season || !seasons$1 || !seasons$1[season]) {\n return null; // couldn't figure it out\n }\n\n var s = spacetime(seasons$1[season]);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _04Astronomical = astroDates;\n\n var dates$2 = {\n // Muslim holidays\n 'isra and miraj': 'april 13',\n 'lailat al-qadr': 'june 10',\n 'eid al-fitr': 'june 15',\n 'id al-Fitr': 'june 15',\n 'eid ul-Fitr': 'june 15',\n ramadan: 'may 16',\n // Range holiday\n 'eid al-adha': 'sep 22',\n muharram: 'sep 12',\n 'prophets birthday': 'nov 21'\n };\n var lunarHolidays = dates$2;\n\n var dayDiff = -10.64;\n\n var lunarDates = function lunarDates(str, normal, year) {\n if (lunarHolidays.hasOwnProperty(str) || lunarHolidays.hasOwnProperty(normal)) {\n var date = lunarHolidays[str] || lunarHolidays[normal] || [];\n\n if (!date) {\n return null;\n } // start at 2018\n\n\n var s = spacetime(date + ' 2018');\n var diff = year - 2018;\n var toAdd = diff * dayDiff;\n s = s.add(toAdd, 'day');\n s = s.startOf('day'); // now set the correct year\n\n s = s.year(year);\n\n if (s.isValid()) {\n return s;\n }\n }\n\n return null;\n };\n\n var _05LunarDates = lunarDates;\n\n var nowYear = spacetime.now().year();\n\n var spacetimeHoliday = function spacetimeHoliday(str, year) {\n year = year || nowYear;\n str = str || '';\n str = String(str);\n str = str.trim().toLowerCase();\n str = str.replace(/'s/, 's'); // 'mother's day'\n\n var normal = str.replace(/ day$/, '');\n normal = normal.replace(/^the /, '');\n normal = normal.replace(/^orthodox /, ''); //orthodox good friday\n // try easier, unmoving holidays\n\n var s = _01FixedDates(str, normal, year);\n\n if (s !== null) {\n return s;\n } // try 'nth monday' holidays\n\n\n s = _02NthWeekday(str, normal, year);\n\n if (s !== null) {\n return s;\n } // easter-based holidays\n\n\n s = _03EasterDates(str, normal, year);\n\n if (s !== null) {\n return s;\n } // solar-based holidays\n\n\n s = _04Astronomical(str, normal, year);\n\n if (s !== null) {\n return s;\n } // mostly muslim holidays\n\n\n s = _05LunarDates(str, normal, year);\n\n if (s !== null) {\n return s;\n }\n\n return null;\n };\n\n var src = spacetimeHoliday;\n\n return src;\n\n}));\n//# sourceMappingURL=spacetime-holiday.js.map\n","const { CalendarDate } = require('../_units')\nconst spacetimeHoliday = require('spacetime-holiday')\n\nconst parseHoliday = function(doc, context) {\n let d = null\n let str = doc.match('#Holiday+').text('reduced')\n let year = 2020 //change me!\n let s = spacetimeHoliday(str, year)\n if (s !== null) {\n d = new CalendarDate(s, null, context)\n }\n return d\n}\nmodule.exports = parseHoliday\n","const { Unit, Day, CalendarDate, Month } = require('../_units')\nconst tryHere = require('../../../../../src/Phrase/match/03-tryMatch')\n\nconst knownWord = {\n today: (context) => {\n return new Day(context.today, null, context)\n },\n yesterday: (context) => {\n return new Day(context.today.minus(1, 'day'), null, context)\n },\n tomorrow: (context) => {\n return new Day(context.today.plus(1, 'day'), null, context)\n },\n}\n\n// parse things like 'june 5th 2019'\n// most of this is done in spacetime\nconst parseExplicit = function (doc, context) {\n let impliedYear = context.today.year()\n\n // 'fifth of june 1992'\n let m = doc.match('[#Value] of? [#Month] [#Year]')\n // 'june the fifth 1992'\n if (!m.found) {\n m = doc.match('[#Month] the? [#Value] [#Year]')\n }\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n date: m.groups('date').text(),\n year: m.groups('year').text() || impliedYear,\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n //no-dates\n // 'march 1992'\n m = doc.match('[#Month] of? [#Year]')\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n year: m.groups('year').text() || impliedYear,\n }\n let d = new Month(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n //no-years\n // 'fifth of june'\n m = doc.match('[#Value] of? [#Month]')\n // 'june the fifth'\n if (!m.found) {\n m = doc.match('[#Month] the? [#Value]')\n }\n // support 'dec 5th'\n if (m.found) {\n let obj = {\n month: m.groups('month').text(),\n date: m.groups('date').text(),\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n // support 'december'\n if (doc.has('#Month')) {\n let obj = {\n month: doc.match('#Month').text(),\n date: 1, //assume 1st\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n\n // support date-only 'the 21st'\n m = doc.match('the [#Value]')\n if (m.found) {\n let obj = {\n month: context.today.month(),\n date: m.groups('date').text(),\n year: context.today.year(),\n }\n let d = new CalendarDate(obj, null, context)\n if (d.d.isValid() === true) {\n return d\n }\n }\n let str = doc.text('reduced')\n // today, yesterday, tomorrow\n if (knownWord.hasOwnProperty(str) === true) {\n let d = knownWord[str](context)\n return d\n }\n // punt it to spacetime, for the heavy-lifting\n let d = new Unit(str, null, context)\n // did we find a date?\n if (d.d.isValid() === false) {\n return null\n }\n return d\n}\nmodule.exports = parseExplicit\n","const section = {\n shift: require('./sections/01-shift'),\n time: require('./sections/02-time'),\n relative: require('./sections/03-relative'),\n timezone: require('./sections/04-timezone'),\n}\n\nconst steps = {\n implied: require('./steps/00-implied'),\n duration: require('./steps/01-duration'),\n holiday: require('./steps/02-holidays'),\n explicit: require('./steps/03-explicit'),\n}\n\nconst parseDate = function (doc, context) {\n //parse-out any sections\n let shift = section.shift(doc)\n let tz = section.timezone(doc)\n let time = section.time(doc, context)\n let rel = section.relative(doc)\n //set our new timezone\n if (tz) {\n context = Object.assign({}, context, { timezone: tz })\n let iso = context.today.format('iso-short')\n context.today = context.today.goto(context.timezone).set(iso)\n }\n let d = null\n\n //'in two days'\n d = d || steps.implied(doc, context, { shift, time, rel })\n // 'this month'\n d = d || steps.duration(doc, context)\n // 'this haloween'\n d = d || steps.holiday(doc, context)\n // 'this june 2nd'\n d = d || steps.explicit(doc, context)\n // if (typeof process !== undefined && process && process.env.DEBUG) {\n // console.log('\\n\\n=-=-=-=-=-=Date-=-=-=-=-=-=-')\n // console.log(` shift: ${JSON.stringify(shift)}`)\n // console.log(` rel: ${rel || '-'}`)\n // console.log(` time: ${time || '-'}`)\n // console.log(`\\n str: '${doc.text()}'`)\n // console.log('\\n ', d)\n // console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\\n\\n')\n // }\n\n if (!d) {\n return null\n }\n\n // // apply relative\n if (rel === 'last') {\n d.last()\n }\n if (rel === 'next') {\n d.next()\n }\n // apply shift\n if (shift) {\n d.applyShift(shift)\n }\n\n // apply time\n d.applyTime(time)\n\n return d\n}\nmodule.exports = parseDate\n","const parseDate = require('../03-parseDate')\nconst Unit = require('../03-parseDate/Unit')\n\nconst punt = function (unit, context) {\n unit = unit.applyShift(context.casual_duration)\n return unit\n}\n\n//\nconst logic = function (doc, context) {\n // two explicit dates - 'between friday and sunday'\n let m = doc.match('between [*] and [*]')\n if (m.found) {\n let start = m.groups('start')\n start = parseDate(start, context)\n let end = m.groups('end')\n end = parseDate(end, context)\n if (start) {\n return {\n start: start,\n end: end,\n }\n }\n }\n\n // two months, no year - 'june 5 to june 7'\n m = doc.match('[#Month #Value] to [#Month #Value] [#Year?]')\n if (m.found) {\n let res = m.groups()\n let start = res.from\n if (res.year) {\n start = start.concat(res.year)\n }\n start = parseDate(start, context)\n if (start) {\n let end = res.to\n if (res.year) {\n end = end.concat(res.year)\n }\n end = parseDate(end, context)\n return {\n start: start,\n end: end,\n }\n }\n }\n // one month, one year, first form - 'january 5 to 7 1998'\n m = doc.match('[#Month] [#Value] to [#Value] of? [#Year]')\n if (m.found) {\n let res = m.groups()\n let start = res.month.concat(res.from, res.year)\n start = parseDate(start, context)\n if (start) {\n let end = res.month.concat(res.to, res.year)\n end = parseDate(end, context)\n return {\n start: start,\n end: end,\n }\n }\n }\n // one month, one year, second form - '5 to 7 of january 1998'\n m = doc.match('[#Value] to [#Value of? #Month of? #Year]')\n if (m.found) {\n let to = m.groups('to')\n to = parseDate(to, context)\n if (to) {\n let fromDate = m.groups('to')\n let from = to.clone()\n from.d = from.d.date(fromDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // one month, no year - '5 to 7 of january'\n m = doc.match('[#Value] to [#Value of? #Month]')\n if (m.found) {\n let to = m.groups('to')\n to = parseDate(to, context)\n if (to) {\n let fromDate = m.groups('from')\n let from = to.clone()\n from.d = from.d.date(fromDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // one month, no year - 'january 5 to 7'\n m = doc.match('[#Month #Value] to [#Value]')\n if (m.found) {\n let from = m.groups('from')\n from = parseDate(from, context)\n if (from) {\n let toDate = m.groups('to')\n let to = from.clone()\n to.d = to.d.date(toDate.text('normal'))\n return {\n start: from,\n end: to,\n }\n }\n }\n // 'from A to B'\n m = doc.match('from? [*] (to|@hasHyphen|until|upto) [*]')\n if (m.found) {\n let from = m.groups('from')\n let to = m.groups('to')\n from = parseDate(from, context)\n to = parseDate(to, context)\n if (from && to) {\n return {\n start: from,\n end: to,\n }\n }\n }\n // 'before june'\n m = doc.match('^due (by|before|on|in)? [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n const today = new Unit(context.today, null, context)\n return {\n start: today,\n end: punt(d.clone(), context),\n }\n }\n }\n // 'after june'\n m = doc.match('^(after|following|from) [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n return {\n start: d,\n end: punt(d.clone(), context),\n }\n }\n }\n // 'in june'\n m = doc.match('^(on|during|in) [*]', 0)\n if (m.found) {\n let d = parseDate(m, context)\n if (d) {\n return {\n start: d,\n end: d.clone().end(),\n }\n }\n }\n //else, try whole thing\n let d = parseDate(doc, context)\n if (d) {\n return {\n start: d,\n end: d.clone().end(),\n }\n }\n return {\n start: null,\n end: null,\n }\n}\nmodule.exports = logic\n","const spacetime = require('spacetime')\nconst normalize = require('./00-normalize')\nconst parseRanges = require('./01-parse-range')\n\nconst getDate = function (doc, context) {\n // validate context a bit\n context = context || {}\n\n context.timezone = context.timezone || 'ETC/UTC'\n context.today = spacetime(context.today || null, context.timezone)\n //turn 'five' into 5..\n doc = normalize(doc)\n //interpret 'between [A] and [B]'...\n return parseRanges(doc, context)\n}\nmodule.exports = getDate\n","let arr = [\n ['mon', 'monday'],\n ['tue', 'tuesday'],\n ['tues', 'tuesday'],\n ['wed', 'wednesday'],\n ['thu', 'thursday'],\n ['thurs', 'thursday'],\n ['fri', 'friday'],\n ['sat', 'saturday'],\n ['sun', 'sunday'],\n\n ['jan', 'january'],\n ['feb', 'february'],\n ['mar', 'march'],\n ['apr', 'april'],\n ['jun', 'june'],\n ['jul', 'july'],\n ['aug', 'august'],\n ['sep', 'september'],\n ['sept', 'september'],\n ['oct', 'october'],\n ['nov', 'november'],\n ['dec', 'december'],\n]\n\narr = arr.map(a => {\n return { short: a[0], long: a[1] }\n})\n\nmodule.exports = arr\n","const parse = require('./02-getDate')\nconst abbrevs = require('./data/_abbrevs')\n\nmodule.exports = {\n /** overload the original json with noun information */\n json: function (options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { terms: false }\n let res = []\n let format = options.format || 'iso'\n this.forEach((doc) => {\n let json = doc.json(options)[0]\n let obj = parse(doc, this.context)\n let start = obj.start ? obj.start.format(format) : null\n let end = obj.end ? obj.end.format(format) : null\n // set iso strings to json result\n json.date = {\n start: start,\n end: end,\n }\n // add duration\n if (start && end) {\n json.date.duration = obj.start.d.diff(obj.end.d)\n // we don't need these\n delete json.date.duration.milliseconds\n delete json.date.duration.seconds\n }\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n /** render all dates according to a specific format */\n format: function (fmt) {\n this.forEach((doc) => {\n let obj = parse(doc, this.context)\n let str = ''\n if (obj.start) {\n str = obj.start.format(fmt)\n if (obj.end) {\n let end = obj.start.format(fmt)\n if (str !== end) {\n str += ' to ' + end\n }\n }\n doc.replaceWith(str, { keepTags: true, keepCase: false })\n }\n })\n return this\n },\n /** replace 'Fri' with 'Friday', etc*/\n toLongForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.short, a.long, true)\n })\n return this\n },\n /** replace 'Friday' with 'Fri', etc*/\n toShortForm: function () {\n abbrevs.forEach((a) => {\n this.replace(a.long, a.short, true)\n })\n return this\n },\n}\n","const tagger = require('./01-tag')\nconst tags = require('./data/_tags')\nconst words = require('./data/words')\nconst methods = require('./methods')\nconst spacetime = require('spacetime')\n\nconst addMethods = function (Doc, world) {\n // our new tags\n world.addTags(tags)\n // add info for the date plugin\n world.addWords(words)\n // run our tagger\n world.postProcess(tagger)\n\n /** */\n class Dates extends Doc {\n constructor(list, from, w) {\n super(list, from, w)\n this.context = {\n casual_duration: { weeks: 2 },\n }\n }\n }\n //add-in methods\n Object.assign(Dates.prototype, methods)\n\n Doc.prototype.dates = function (n) {\n let context = {}\n if (n && typeof n === 'object') {\n context = n\n n = null\n }\n let r = this.clauses()\n let dates = r.match('#Date+')\n if (typeof n === 'number') {\n dates = dates.get(n)\n }\n if (typeof n === 'number') {\n dates = dates.get(n)\n }\n let d = new Dates(dates.list, this, this.world)\n if (context.today) {\n context.today = spacetime(context.today, context.timezone)\n }\n d.context = context\n return d\n }\n}\n\nmodule.exports = addMethods\n"],"names":["preps","thisNext","sections","seasons","tagYear","m","reason","found","term","termList","num","parseInt","clean","tag","tagYearSafe","fixDates","doc","match","month","val","ifNo","duration","unTag","season","date","not","cardinal","v","time","here","values","has","replaceWith","dateTagger","sectionTagger","timeTagger","shiftTagger","fixUp","oops","d","knownDate","lastTerm","terms","methods","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","tagDate","forEach","fn","FinancialQuarter","isA","Season","Year","notA","Duration","Holiday","Timezone","DateShift","createCommonjsModule","module","exports","getCjsExportFromNamespace","n","fns","isLeapYear","year","isDate","Object","prototype","toString","call","isNaN","valueOf","isArray","input","isObject","zeroPad","str","len","arguments","length","undefined","pad","Array","join","titleCase","toUpperCase","substr","ordinal","i","j","k","toCardinal","String","replace","normalize","toLowerCase","trim","getEpoch","tmp","getTime","epoch","beADate","s","clone","set","formatTimezone","offset","delimiter","absOffset","Math","abs","sign","concat","fns_1","fns_2","fns_3","fns_4","fns_5","fns_6","fns_7","fns_8","fns_9","fns_10","fns_11","fns_12","serialize","getMonth","getDate","getHours","shouldChange","start","end","defaultOffset","Date","bias","getTimezoneOffset","shift","current","summerTime","quickOffset","zones","timezones","obj","tz","console","warn","dst","jul","dec","hem","split","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","data","all","keys","Number","names","before","name","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset","parseOffset_1","local","cities","reduce","h","city","lookupTz","hasOwnProperty","test","id","Error","find","o","millisecond","second","minute","hour","day","week","milliseconds","walk","unit","previous","startUnit","original","diff","halfStep","units","valid","walkTo","getFullYear","seconds","wants","old","silent","walk_1","shortMonths","longMonths","buildMapping","sep","_i","months","short","long","mapping","i18n","parseOffset$1","parseFloat","parseOffset_1$1","parseTime","arr","startOf","ampm","_h","parseTime_1","monthLengths","monthLengths_1","hasDate","max","hasDate_1","months$1","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","strParse","getNow","now","dates","tonight","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","isoOffset","isNegative","floor","ceil","_offset","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","quarter","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","niceYear","niceDay","niceFull","aliases","mdy","dmy","ymd","printFormat","out","indexOf","_","fmt","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","_s","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","unixFmt","chars","quoteOn","push","txt","c","unixFmt_1","units$1","doUnit","endOf","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","msDiff","minutes","hours","weeks","waterfall","reverseDiff","main","reversed","diff$1","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","value","slice","since","isNow","every","rounded","qualified","precise","englishValues","englishValue","nextUnit","nextValue","splice","since_1","north","south","quarters","units$2","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","next","result","every_1","parseDst","epochShift","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","units$3","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","from","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","confirm","want","methods$1","getMilliseconds","getSeconds","getMinutes","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$3","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","millenium","_03Year","methods$4","addMethods","Space","query","isLeapYear$2","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","order$1","keep","dstAwareUnits","keepDate","addMethods$1","SpaceTime","_sum","plus","print","addMethods$2","same","addMethods$3","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","addMethods$4","defineProperty","get","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","filter","whereIts_1","_version","main$1","setToday","extend","version","plugin","src","america","asia","europe","africa","aus","pac","informal","bst","ireland","cet","cest","eet","eest","trt","etc","utc","gmt","sast","acst","acdt","aest","aedt","awst","awdt","acwst","lhst","lhdt","msk","russian","cst","cdt","mst","mdt","ast","adt","est","edt","pst","pdt","ahst","ahdt","hst","nst","ndt","brt","brasília","brasilia","amt","east","easst","vet","pyt","pyst","cot","clst","cldt","uyt","ist","irst","irdt","iranian","pkt","ict","ct","almt","yakt","gst","uae","hkt","wib","wita","idt","israeli","krat","myt","sgt","kst","uzt","vlat","mvt","mut","mht","sst","chst","pgt","iana","formal","lex","numbers","toNumber","adverbs","remove","knownUnits","parseShift","ts","text","hardCoded","daybreak","lunchtime","dinnertime","halfPast","mins","behind","context","timeStr","parseRelative","rel","parseTimezone","Unit","enumerable","writable","Day","Month","Quarter","WeekDay","weekDay","CalendarDate","onlySection","section","Week","namedUnit","Model","define","feb","apr","nov","parseHoliday","spacetimeHoliday","knownWord","parseExplicit","impliedYear","groups","relative","steps","implied","holiday","explicit","require$$7","parseDate","applyShift","applyTime","punt","casual_duration","logic","fromDate","toDate","parseRanges","map","keepTags","keepCase","toLongForm","abbrevs","toShortForm","Doc","world","addTags","tags","addWords","words","postProcess","tagger","Dates","list","r","clauses"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;EACA,IAAMA,KAAK,GAAG,oDAAd;;EACA,IAAMC,QAAQ,GAAG,mDAAjB;;EACA,IAAMC,QAAQ,GAAG,uDAAjB;;EACA,IAAMC,OAAO,GAAG,oCAAhB;EAGA;;EACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAIC,MAAJ,EAAe;EAC7B,MAAID,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB;EACD;;EACD,MAAIC,IAAI,GAAGH,CAAC,CAACI,QAAF,GAAa,CAAb,CAAX;;EACA,MAAID,IAAJ,EAAU;EACR,QAAIE,GAAG,GAAGC,QAAQ,CAACH,IAAI,CAACI,KAAN,EAAa,EAAb,CAAlB;;EACA,QAAIF,GAAG,IAAIA,GAAG,GAAG,IAAb,IAAqBA,GAAG,GAAG,IAA/B,EAAqC;EACnCL,MAAAA,CAAC,CAACQ,GAAF,CAAM,MAAN,EAAcP,MAAd;EACD;EACF;EACF,CAXD;;;EAaA,IAAMQ,WAAW,GAAG,SAAdA,WAAc,CAACT,CAAD,EAAIC,MAAJ,EAAe;EACjC,MAAID,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB;EACD;;EACD,MAAIC,IAAI,GAAGH,CAAC,CAACI,QAAF,GAAa,CAAb,CAAX;;EACA,MAAID,IAAJ,EAAU;EACR,QAAIE,GAAG,GAAGC,QAAQ,CAACH,IAAI,CAACI,KAAN,EAAa,EAAb,CAAlB;;EACA,QAAIF,GAAG,IAAIA,GAAG,GAAG,IAAb,IAAqBA,GAAG,GAAG,IAA/B,EAAqC;EACnCL,MAAAA,CAAC,CAACQ,GAAF,CAAM,MAAN,EAAcP,MAAd;EACD;EACF;EACF,CAXD;;EAaA,IAAMS,QAAQ,GAAG,SAAXA,QAAW,CAAUC,GAAV,EAAe;EAC9BA,EAAAA,GAAG,CAACC,KAAJ,CAAU,sDAAV,EAAkEJ,GAAlE,CAAsE,MAAtE,EAA8E,cAA9E;EACAG,EAAAA,GAAG,CAACC,KAAJ,CAAU,wBAAV,EAAoCJ,GAApC,CAAwC,MAAxC,EAAgD,YAAhD,EAF8B;;EAK9B,MAAIK,KAAK,GAAGF,GAAG,MAAH,CAAO,QAAP,CAAZ;;EACA,MAAIE,KAAK,CAACX,KAAN,KAAgB,IAApB,EAA0B;;EAExBW,IAAAA,KAAK,CAACD,KAAN,kBAA6BJ,GAA7B,CAAiC,MAAjC,EAAyC,wBAAzC,EAFwB;;EAIxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,kBAAZ,EAAgCJ,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EAJwB;;EAMxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,kBAAZ,EAAgCJ,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EANwB;;EAQxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,yBAAZ,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,gBAAnD,EARwB;;EAUxBK,IAAAA,KAAK,CAACD,KAAN,CAAY,mBAAZ,EAAiCJ,GAAjC,CAAqC,MAArC,EAA6C,iBAA7C;EACD,GAjB6B;;;EAoB9B,MAAIM,GAAG,GAAGH,GAAG,MAAH,CAAO,QAAP,CAAV;;EACA,MAAIG,GAAG,CAACZ,KAAJ,KAAc,IAAlB,EAAwB;;EAEtBY,IAAAA,GAAG,CAACF,KAAJ,CAAU,0BAAV,EAAsCG,IAAtC,CAA2C,QAA3C,EAAqDP,GAArD,CAAyD,MAAzD,EAAiE,YAAjE,EAFsB;;EAKtBM,IAAAA,GAAG,CAACF,KAAJ,CAAU,0BAAV,EAAsCG,IAAtC,CAA2C,QAA3C,EAAqDP,GAArD,CAAyD,MAAzD,EAAiE,YAAjE,EALsB;;EAQtBM,IAAAA,GAAG,CAACF,KAAJ,CAAU,uBAAV,QAAsC,OAAtC,EAA+CJ,GAA/C,CAAmD,OAAnD,EAA4D,gBAA5D,EARsB;;EAWtB,QAAIQ,QAAQ,GAAGF,GAAG,MAAH,CAAO,WAAP,CAAf;;EACA,QAAIE,QAAQ,CAACd,KAAT,KAAmB,IAAvB,EAA6B;;EAE3Bc,MAAAA,QAAQ,CAACJ,KAAT,CAAe,sBAAf,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,gBAAnD,EAF2B;;EAI3BQ,MAAAA,QAAQ,CAACJ,KAAT,CAAe,+BAAf,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4D,0BAA5D,EAJ2B;;EAM3BQ,MAAAA,QAAQ,CAACJ,KAAT,WAAkBjB,KAAlB,yBAA6Ca,GAA7C,CAAiD,MAAjD,EAAyD,gBAAzD,EAN2B;;EAQ3BQ,MAAAA,QAAQ,CAACJ,KAAT,CAAe,sBAAf,EAAuCK,KAAvC,CAA6C,MAA7C,EAAqD,eAArD;EACD;EACF,GA3C6B;;;EA8C9B,MAAIC,MAAM,GAAGP,GAAG,MAAH,CAAOb,OAAP,CAAb;;EACA,MAAIoB,MAAM,CAAChB,KAAP,KAAiB,IAArB,EAA2B;EACzBgB,IAAAA,MAAM,CAACN,KAAP,WAAgBjB,KAAhB,eAA0BC,QAA1B,cAAsCE,OAAtC,GAAiDU,GAAjD,CAAqD,MAArD,EAA6D,iBAA7D;EACAU,IAAAA,MAAM,CAACN,KAAP,gBAAqBf,QAArB,iBAAoCC,OAApC,GAA+CU,GAA/C,CAAmD,MAAnD,EAA2D,gBAA3D;EACAU,IAAAA,MAAM,CAACN,KAAP,WAAgBd,OAAhB,cAA2BH,KAA3B,kBAA+Ca,GAA/C,CAAmD,MAAnD,EAA2D,aAA3D;EACD,GAnD6B;;;EAsD9B,MAAIW,IAAI,GAAGR,GAAG,MAAH,CAAO,OAAP,CAAX;;EACA,MAAIQ,IAAI,CAACjB,KAAL,KAAe,IAAnB,EAAyB;;EAEvBiB,IAAAA,IAAI,CAACP,KAAL,CAAW,qBAAX,EAAkCJ,GAAlC,CAAsC,MAAtC,EAA8C,YAA9C,EAFuB;;EAIvBW,IAAAA,IAAI,CAACP,KAAL,WAAchB,QAAd,aAAgCY,GAAhC,CAAoC,MAApC,EAA4C,UAA5C,EAJuB;;EAMvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,oCAAX,EAAiDJ,GAAjD,CAAqD,MAArD,EAA6D,IAA7D,EANuB;;EAQvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,6DAAX,EAA0EJ,GAA1E,CAA8E,MAA9E,EAAsF,UAAtF,EARuB;;EAUvBW,IAAAA,IAAI,CAACP,KAAL,gBAAmBf,QAAnB,gBAAwCW,GAAxC,CAA4C,MAA5C,EAAoD,YAApD,EAVuB;;EAYvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,6BAAX,EAA0CJ,GAA1C,CAA8C,MAA9C,EAAsD,aAAtD,EAZuB;;EAcvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,kCAAX,EAA+CJ,GAA/C,CAAmD,MAAnD,EAA2D,eAA3D,EAduB;;EAgBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,8CAAX,EAA2DQ,GAA3D,CAA+D,QAA/D,EAAyEZ,GAAzE,CAA6E,MAA7E,EAAqF,sBAArF,EAhBuB;;EAkBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,iBAAX,EAA8B,CAA9B,EAAiCK,KAAjC,CAAuC,MAAvC,EAA+CA,KAA/C,CAAqD,QAArD,EAA+DT,GAA/D,CAAmE,MAAnE,EAA2E,SAA3E,EAlBuB;;EAoBvBW,IAAAA,IAAI,CAACP,KAAL,CAAW,+BAAX,EAA4CG,IAA5C,CAAiD,WAAjD,EAA8DP,GAA9D,CAAkE,MAAlE,EAA0E,gBAA1E;EACD,GA5E6B;;;EA+E9B,MAAIa,QAAQ,GAAGV,GAAG,MAAH,CAAO,WAAP,CAAf;;EACA,MAAIU,QAAQ,CAACnB,KAAT,KAAmB,IAAvB,EAA6B;EAC3B,QAAIoB,CAAC,GAAGD,QAAQ,CAACT,KAAT,6BAA2C,CAA3C,CAAR;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,iBAAJ,CAAP,CAF2B;;EAI3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,uBAAqC,CAArC,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,WAAJ,CAAP,CAL2B;;EAO3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,8BAA4C,CAA5C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,kBAAJ,CAAP,CAR2B;;EAU3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,wCAAsD,CAAtD,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,kBAAJ,CAAP,CAX2B;;EAa3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,kEAAgF,CAAhF,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAd2B;;EAgB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,2BAAf,EAA4C,CAA5C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAjB2B;;EAmB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,8BAAf,EAA+C,CAA/C,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CApB2B;;EAsB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,sBAAf,EAAuC,CAAvC,CAAJ;EACAb,IAAAA,OAAO,CAACuB,CAAD,EAAI,SAAJ,CAAP,CAvB2B;;EAyB3BA,IAAAA,CAAC,GAAGD,QAAQ,CAACT,KAAT,CAAe,yBAAf,EAA0C,CAA1C,CAAJ;EACAH,IAAAA,WAAW,CAACa,CAAD,EAAI,SAAJ,CAAX;EACD;;EAED,MAAIC,IAAI,GAAGZ,GAAG,MAAH,CAAO,OAAP,CAAX;;EACA,MAAIY,IAAI,CAACrB,KAAL,KAAe,IAAnB,EAAyB;;EAEvBqB,IAAAA,IAAI,CAACX,KAAL,CAAW,oCAAX,EAAiDJ,GAAjD,CAAqD,MAArD,EAA6D,kBAA7D,EAFuB;;EAIvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,iBAAX,EAA8BQ,GAA9B,CAAkC,OAAlC,EAA2CZ,GAA3C,CAA+C,MAA/C,EAAuD,YAAvD,EAJuB;;EAMvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,4CAAX,EAAyD,CAAzD,EAA4DJ,GAA5D,CAAgE,MAAhE,EAAwE,UAAxE,EANuB;;EAQvBe,IAAAA,IAAI,CAACX,KAAL,CAAW,uBAAX,EAAoC,CAApC,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmD,eAAnD;EACD;;EAED,SAAOG,GAAP;EACD,CA1HD;;EA2HA,YAAc,GAAGD,QAAjB;;EC7JA,IAAMc,IAAI,GAAG,aAAb;;EAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAUd,GAAV,EAAe;;EAE5B,MAAI,CAACA,GAAG,CAACe,GAAJ,CAAQ,oBAAR,CAAL,EAAoC;EAClCf,IAAAA,GAAG,CAACC,KAAJ,CAAU,eAAV,EAA2B,CAA3B,EAA8Be,WAA9B,CAA0C,GAA1C,EAA+CnB,GAA/C,CAAmD,UAAnD,EAA+DgB,IAA/D;EACD;;EACD,MAAIb,GAAG,CAACe,GAAJ,CAAQ,QAAR,CAAJ,EAAuB;;EAErBf,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4DgB,IAA5D,EAFqB;;EAIrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,MAApD,EAA4DgB,IAA5D,EAJqB;;EAMrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2BAAV,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmDgB,IAAnD,EANqB;;EAQrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,6DAAV,EAAyEJ,GAAzE,CAA6E,MAA7E,EAAqFgB,IAArF,EARqB;;EAUrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,cAAV,EAA0BJ,GAA1B,CAA8B,MAA9B,EAAsCgB,IAAtC,EAVqB;;EAYrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,cAAV,EAA0BJ,GAA1B,CAA8B,MAA9B,EAAsCgB,IAAtC,EAZqB;;EAcrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2BAAV,EAAuCJ,GAAvC,CAA2C,MAA3C,EAAmDgB,IAAnD,EAdqB;;EAgBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,0CAAV,EAAsDJ,GAAtD,CAA0D,MAA1D,EAAkEgB,IAAlE,EAhBqB;;EAkBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,yCAAV,EAAqDJ,GAArD,CAAyD,MAAzD,EAAiEgB,IAAjE,EAlBqB;;EAoBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,6CAAV,EAAyDJ,GAAzD,CAA6D,MAA7D,EAAqEgB,IAArE,EApBqB;;EAsBrBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,MAAjC,EAAyCgB,IAAzC;EACD;;EACD,SAAOb,GAAP;EACD,CA9BD;;EA+BA,aAAc,GAAGc,MAAjB;;ECjCA,IAAMD,MAAI,GAAG,aAAb;;EAEA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAASjB,GAAT,EAAc;EAE/BA,EAAAA,GAAG,CAACC,KAAJ,CAAU,qEAAV,EAAiFA,KAAjF,CAAuF,OAAvF,EAAgGJ,GAAhG,CAAoG,QAApG,EAA8GgB,MAA9G;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,eAAV,EAA2BJ,GAA3B,CAA+B,kBAA/B,EAAmDgB,MAAnD;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,kCAAV,EAA8CJ,GAA9C,CAAkD,kBAAlD,EAAsEgB,MAAtE;EACAb,EAAAA,GAAG,CAACC,KAAJ,CAAU,iCAAV,EAA6CJ,GAA7C,CAAiD,QAAjD,EAA2DgB,MAA3D;;EAEA,MAAIb,GAAG,CAACe,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBf,IAAAA,GAAG,CAACC,KAAJ,CAAU,0BAAV,EAAsCJ,GAAtC,CAA0C,MAA1C,EAAkDgB,MAAlD,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,gCAAV,EAA4CJ,GAA5C,CAAgD,MAAhD,EAAwDgB,MAAxD,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2DAAV,EAAuEJ,GAAvE,CAA2E,MAA3E,EAAmFgB,MAAnF,EANoB;;EAQpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,QAAV,EAAoBJ,GAApB,CAAwB,MAAxB,EAAgCgB,MAAhC,EARoB;;EAUpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2DAAV,EAAuEJ,GAAvE,CAA2E,MAA3E,EAAmFgB,MAAnF,EAVoB;;EAYpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,aAAV,EAAyBJ,GAAzB,CAA6B,MAA7B,EAAqCgB,MAArC,EAZoB;;EAcpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,sBAAV,EAAkCJ,GAAlC,CAAsC,MAAtC,EAA8CgB,MAA9C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,uBAAV,EAAmCJ,GAAnC,CAAuC,MAAvC,EAA+CgB,MAA/C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,MAAjC,EAAyCgB,MAAzC,EAhBoB;;EAkBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,gFAAV,EAA4FJ,GAA5F,CAAgG,MAAhG,EAAwGgB,MAAxG,EAlBoB;;EAoBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,4BAAV,EAAwCJ,GAAxC,CAA4C,MAA5C,EAAoDgB,MAApD,EApBoB;;EAsBpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,2CAAV,EAAuDJ,GAAvD,CAA2D,MAA3D,EAAmEgB,MAAnE;EACD;;EACD,SAAOb,GAAP;EACD,CAhCD;;EAiCA,YAAc,GAAGiB,UAAjB;;ECnCA,IAAMJ,MAAI,GAAG,gBAAb;;EAEA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAASlB,GAAT,EAAc;EAClC,MAAIA,GAAG,CAACe,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBf,IAAAA,GAAG,CAACC,KAAJ,CAAU,wEAAV,EAAoFJ,GAApF,CAAwF,MAAxF,EAAgGgB,MAAhG,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,mCAAV,EAA+CJ,GAA/C,CAAmD,MAAnD,EAA2DgB,MAA3D,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,yEAAV,EAAqFJ,GAArF,CAAyF,MAAzF,EAAiGgB,MAAjG,EANoB;;EAQpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,kBAAV,EAA8BJ,GAA9B,CAAkC,MAAlC,EAA0CgB,MAA1C;EACD;;EACD,SAAOb,GAAP;EACD,CAZD;;EAaA,eAAc,GAAGkB,aAAjB;;ECfA,IAAML,MAAI,GAAG,aAAb;;EAGA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAAUnB,GAAV,EAAe;;EAEhC,MAAIA,GAAG,CAACe,GAAJ,CAAQ,WAAR,KAAwB,CAACf,GAAG,CAACe,GAAJ,CAAQ,QAAR,CAA7B,EAAgD;EAC9Cf,IAAAA,GAAG,CAACC,KAAJ,CAAU,qDAAV,EAAiEJ,GAAjE,CAAqE,MAArE,EAA6EgB,MAA7E;EACD,GAJ+B;;;EAMhC,MAAIb,GAAG,CAACe,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBf,IAAAA,GAAG,CAACC,KAAJ,CAAU,kDAAV,EAA8DJ,GAA9D,CAAkE,UAAlE,EAA8EgB,MAA9E,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,UAAjC,EAA6CgB,MAA7C;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,iBAAV,EAA6BJ,GAA7B,CAAiC,UAAjC,EAA6CgB,MAA7C;EAEAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,+BAAV,EAA2CJ,GAA3C,CAA+C,UAA/C,EAA2DgB,MAA3D,EAPoB;;;;EAarB;;EACD,SAAOb,GAAP;EACD,CArBD;;EAsBA,WAAc,GAAGmB,UAAjB;;ECzBA,IAAMN,MAAI,GAAG,cAAb;;EAEA,IAAMO,WAAW,GAAG,SAAdA,WAAc,CAAUpB,GAAV,EAAe;EACjC,MAAIA,GAAG,CAACe,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpBf,IAAAA,GAAG,CAACC,KAAJ,CAAU,6CAAV,EAAyDJ,GAAzD,CAA6D,YAA7D,EAA2EgB,MAA3E,EAFoB;;EAIpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,wBAAV,EAAoCJ,GAApC,CAAwC,YAAxC,EAAsDgB,MAAtD,EAJoB;;EAMpBb,IAAAA,GAAG,CAACC,KAAJ,CAAU,qCAAV,EAAiDJ,GAAjD,CAAqD,YAArD,EAAmEgB,MAAnE;EACAb,IAAAA,GAAG,CAACC,KAAJ,CAAU,oCAAV,EAAgDJ,GAAhD,CAAoD,YAApD,EAAkEgB,MAAlE,EAPoB;EASrB;;EACD,SAAOb,GAAP;EACD,CAZD;;EAaA,aAAc,GAAGoB,WAAjB;;ECfA,IAAMP,MAAI,GAAG,YAAb;;EAEA,IAAMQ,KAAK,GAAG,SAARA,KAAQ,CAAUrB,GAAV,EAAe;;EAE3B,MAAIA,GAAG,CAACe,GAAJ,CAAQ,OAAR,CAAJ,EAAsB;;EAEpB,QAAIO,IAAI,GAAGtB,GAAG,CAACC,KAAJ,CAAU,kBAAV,CAAX;;EACA,QAAIqB,IAAI,CAAC/B,KAAL,IAAc,CAAC+B,IAAI,CAACP,GAAL,CAAS,MAAT,CAAnB,EAAqC;EACnCO,MAAAA,IAAI,CAACrB,KAAL,CAAW,SAAX,EAAsBK,KAAtB,CAA4B,MAA5B,EAAoC,WAApC;EACD;;EAED,QAAIiB,CAAC,GAAGvB,GAAG,CAACC,KAAJ,CAAU,QAAV,CAAR,CAPoB;;EASpBsB,IAAAA,CAAC,CAACtB,KAAF,CAAQ,OAAR,EAAiBK,KAAjB,CAAuB,MAAvB,EAA+B,SAA/B,EAToB;;EAWpBiB,IAAAA,CAAC,CAACtB,KAAF,CAAQ,wCAAR,EAAkDK,KAAlD,CAAwD,MAAxD,EAAgE,mBAAhE;EAEA,QAAIkB,SAAS,GAAG,4BAAhB;;EACA,QAAID,CAAC,CAACR,GAAF,CAAMS,SAAN,CAAJ,EAAsB;;EAEpBD,MAAAA,CAAC,CAACtB,KAAF,WAAWuB,SAAX,iBAAkClB,KAAlC,CAAwC,MAAxC,EAAgD,aAAhD,EAFoB;;EAIpBiB,MAAAA,CAAC,CAACtB,KAAF,qBAAqBuB,SAArB,QAAmC,CAAnC,EAAsClB,KAAtC,CAA4C,MAA5C,EAAoD,aAApD,EAJoB;;EAMpBiB,MAAAA,CAAC,CAACtB,KAAF,qBAAqBuB,SAArB,QAAmClB,KAAnC,CAAyC,MAAzC,EAAiDmB,QAAjD,GAA4D5B,GAA5D,CAAgE,MAAhE,EAAwE,eAAxE,EANoB;;;;;;EAapB0B,MAAAA,CAAC,CAACtB,KAAF,kCAAkCuB,SAAlC,QAAgDlB,KAAhD,CAAsD,MAAtD,EAA8DmB,QAA9D,GAAyE5B,GAAzE,CAA6E,MAA7E,EAAqF,sBAArF;EACD,KA5BmB;;;EA8BpB0B,IAAAA,CAAC,CAACtB,KAAF,kBAAyBK,KAAzB,CAA+B,MAA/B,EAAuCO,MAAvC,EA9BoB;;EAgCpBU,IAAAA,CAAC,CAACtB,KAAF,kBAAyByB,KAAzB,CAA+B,CAA/B,EAAkCpB,KAAlC,CAAwC,MAAxC,EAAgD,eAAhD,EAhCoB;;EAkCpBiB,IAAAA,CAAC,CAACtB,KAAF,wBAA+BJ,GAA/B,CAAmC,MAAnC,EAA2CgB,MAA3C,EAlCoB;;;;EAsCpBU,IAAAA,CAAC,CAACtB,KAAF,6BAAoCyB,KAApC,CAA0C,CAA1C,EAA6CpB,KAA7C,CAAmD,MAAnD,EAA2DO,MAA3D;;EAEA,QAAIU,CAAC,CAACR,GAAF,CAAM,kBAAN,CAAJ,EAA+B;;EAE7BQ,MAAAA,CAAC,CAACtB,KAAF,sCAA6CyB,KAA7C,CAAmD,CAAnD,EAAsDpB,KAAtD,CAA4D,MAA5D,EAAoEO,MAApE,EAF6B;;EAI7BU,MAAAA,CAAC,CAACtB,KAAF,0CAAiDyB,KAAjD,CAAuD,CAAvD,EAA0DpB,KAA1D,CAAgE,MAAhE,EAAwEO,MAAxE;EACD,KA7CmB;;;EA+CpB,QAAIU,CAAC,CAACR,GAAF,CAAM,uCAAN,MAAmD,KAAvD,EAA8D;EAC5DQ,MAAAA,CAAC,CAACtB,KAAF,CAAQ,iCAAR,EAA2CyB,KAA3C,CAAiD,CAAjD,EAAoDpB,KAApD,CAA0D,MAA1D,EAAkEO,MAAlE;EACD,KAjDmB;;;EAmDpB,QAAIU,CAAC,CAACR,GAAF,CAAM,UAAN,KAAqB,CAACQ,CAAC,CAACR,GAAF,CAAM,OAAN,CAA1B,EAA0C;EACxCQ,MAAAA,CAAC,CAACjB,KAAF,CAAQ,MAAR,EAAgBO,MAAhB;EACD,KArDmB;;;EAuDpB,QAAIU,CAAC,CAACR,GAAF,CAAM,eAAN,KAA0B,CAACQ,CAAC,CAACR,GAAF,CAAM,YAAN,CAA3B,IAAkD,CAACQ,CAAC,CAACR,GAAF,CAAM,WAAN,CAAvD,EAA2E;EACzEQ,MAAAA,CAAC,CAACtB,KAAF,CAAQ,QAAR,EAAkBwB,QAAlB,GAA6BnB,KAA7B,CAAmC,MAAnC,EAA2C,aAA3C;EACD,KAzDmB;;;EA2DpB,QAAIiB,CAAC,CAACR,GAAF,CAAM,2CAAN,KAAsD,CAACQ,CAAC,CAACR,GAAF,CAAM,kBAAN,CAA3D,EAAsF;EACpFQ,MAAAA,CAAC,CAACtB,KAAF,CAAQ,2CAAR,EAAqDK,KAArD,CAA2D,MAA3D,EAAmE,WAAnE;EACD,KA7DmB;;;EA+DpB,QAAIiB,CAAC,CAACR,GAAF,CAAM,gBAAN,CAAJ,EAA6B;EAC3BQ,MAAAA,CAAC,CAACtB,KAAF,CAAQ,OAAR,EAAiBK,KAAjB,CAAuB,OAAvB,EAAgC,oBAAhC;EACD,KAjEmB;;;EAoEpBiB,IAAAA,CAAC,CAACtB,KAAF,CAAQ,sBAAR,EAAgCK,KAAhC,CAAsC,MAAtC,EApEoB;;;;EAyErB;;EACD,SAAON,GAAP;EACD,CA7ED;;EA8EA,YAAc,GAAGqB,KAAjB;;EChFA,IAAMM,OAAO,GAAG,CACdC,QADc,EAEdC,SAFc,EAGdC,QAHc,EAIdC,WAJc,EAKdC,OALc,EAMdC,SANc,EAOdC,QAPc,CAAhB;;EAUA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAUnC,GAAV,EAAe;EAC7B2B,EAAAA,OAAO,CAACS,OAAR,CAAgB,UAACC,EAAD;EAAA,WAAQA,EAAE,CAACrC,GAAD,CAAV;EAAA,GAAhB;EACA,SAAOA,GAAP;EACD,CAHD;;EAIA,UAAc,GAAGmC,OAAjB;;ECdA,SAAc,GAAG;EACfG,EAAAA,gBAAgB,EAAE;EAChBC,IAAAA,GAAG,EAAE;EADW,GADH;;EAKfC,EAAAA,MAAM,EAAE;EACND,IAAAA,GAAG,EAAE;EADC,GALO;;EASfE,EAAAA,IAAI,EAAE;EACJF,IAAAA,GAAG,EAAE,CAAC,MAAD,CADD;EAEJG,IAAAA,IAAI,EAAE;EAFF,GATS;;EAcfC,EAAAA,QAAQ,EAAE;EACRJ,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADG,GAdK;;EAkBfK,EAAAA,OAAO,EAAE;EACPL,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADE,GAlBM;;EAsBfM,EAAAA,QAAQ,EAAE;EACRN,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADG,GAtBK;;EA0BfO,EAAAA,SAAS,EAAE;EACTP,IAAAA,GAAG,EAAE,CAAC,MAAD;EADI;EA1BI,CAAjB;;ECAA;EACA,SAASQ,oBAAT,CAA8BV,EAA9B,EAAkCW,MAAlC,EAA0C;EACzC,SAAOA,MAAM,GAAG;EAAEC,IAAAA,OAAO,EAAE;EAAX,GAAT,EAA0BZ,EAAE,CAACW,MAAD,EAASA,MAAM,CAACC,OAAhB,CAA5B,EAAsDD,MAAM,CAACC,OAApE;EACA;;EAED,SAASC,yBAAT,CAAoCC,CAApC,EAAuC;EACtC,SAAOA,CAAC,IAAIA,CAAC,CAAC,SAAD,CAAN,IAAqBA,CAA5B;EACA;;EAED,IAAIC,GAAG,GAAGL,oBAAoB,CAAC,UAAUC,MAAV,EAAkBC,OAAlB,EAA2B;EACxD;EACAA,EAAAA,OAAO,CAACI,UAAR,GAAqB,UAAUC,IAAV,EAAgB;EACnC,WAAOA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAAjC,IAAsCA,IAAI,GAAG,GAAP,KAAe,CAA5D;EACD,GAFD,CAFwD;;;EAOxDL,EAAAA,OAAO,CAACM,MAAR,GAAiB,UAAUhC,CAAV,EAAa;EAC5B,WAAOiC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BpC,CAA/B,MAAsC,eAAtC,IAAyD,CAACqC,KAAK,CAACrC,CAAC,CAACsC,OAAF,EAAD,CAAtE;EACD,GAFD;;EAIAZ,EAAAA,OAAO,CAACa,OAAR,GAAkB,UAAUC,KAAV,EAAiB;EACjC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,gBAAjD;EACD,GAFD;;EAIAd,EAAAA,OAAO,CAACe,QAAR,GAAmB,UAAUD,KAAV,EAAiB;EAClC,WAAOP,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BI,KAA/B,MAA0C,iBAAjD;EACD,GAFD;;EAIAd,EAAAA,OAAO,CAACgB,OAAR,GAAkB,UAAUC,GAAV,EAAe;EAC/B,QAAIC,GAAG,GAAGC,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAA9E;EACA,QAAIG,GAAG,GAAG,GAAV;EACAL,IAAAA,GAAG,GAAGA,GAAG,GAAG,EAAZ;EACA,WAAOA,GAAG,CAACG,MAAJ,IAAcF,GAAd,GAAoBD,GAApB,GAA0B,IAAIM,KAAJ,CAAUL,GAAG,GAAGD,GAAG,CAACG,MAAV,GAAmB,CAA7B,EAAgCI,IAAhC,CAAqCF,GAArC,IAA4CL,GAA7E;EACD,GALD;;EAOAjB,EAAAA,OAAO,CAACyB,SAAR,GAAoB,UAAUR,GAAV,EAAe;EACjC,QAAI,CAACA,GAAL,EAAU;EACR,aAAO,EAAP;EACD;;EAED,WAAOA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA9B;EACD,GAND;;EAQA3B,EAAAA,OAAO,CAAC4B,OAAR,GAAkB,UAAUC,CAAV,EAAa;EAC7B,QAAIC,CAAC,GAAGD,CAAC,GAAG,EAAZ;EACA,QAAIE,CAAC,GAAGF,CAAC,GAAG,GAAZ;;EAEA,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,QAAIC,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,EAArB,EAAyB;EACvB,aAAOF,CAAC,GAAG,IAAX;EACD;;EAED,WAAOA,CAAC,GAAG,IAAX;EACD,GAjBD,CAlCwD;;;EAsDxD7B,EAAAA,OAAO,CAACgC,UAAR,GAAqB,UAAUf,GAAV,EAAe;EAClCA,IAAAA,GAAG,GAAGgB,MAAM,CAAChB,GAAD,CAAZ;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,IAAtC,CAAN;EACA,WAAOxF,QAAQ,CAACuE,GAAD,EAAM,EAAN,CAAf;EACD,GAJD,CAtDwD;;;EA6DxDjB,EAAAA,OAAO,CAACmC,SAAR,GAAoB,YAAY;EAC9B,QAAIlB,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACAF,IAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,GAAkBC,IAAlB,EAAN;EACApB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,GAApB,CAAN,CAH8B;;EAK9BjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACAjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;;EAEA,QAAIjB,GAAG,KAAK,KAAZ,EAAmB;EACjB,aAAO,MAAP;EACD;;EAED,WAAOA,GAAP;EACD,GAbD;;EAeAjB,EAAAA,OAAO,CAACsC,QAAR,GAAmB,UAAUC,GAAV,EAAe;EAChC;EACA,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3B,aAAOA,GAAP;EACD,KAJ+B;;;EAOhC,QAAIvC,OAAO,CAACM,MAAR,CAAeiC,GAAf,CAAJ,EAAyB;EACvB,aAAOA,GAAG,CAACC,OAAJ,EAAP;EACD;;EAED,QAAID,GAAG,CAACE,KAAR,EAAe;EACb,aAAOF,GAAG,CAACE,KAAX;EACD;;EAED,WAAO,IAAP;EACD,GAhBD,CA5EwD;;;EA+FxDzC,EAAAA,OAAO,CAAC0C,OAAR,GAAkB,UAAUpE,CAAV,EAAaqE,CAAb,EAAgB;EAChC,QAAI3C,OAAO,CAACe,QAAR,CAAiBzC,CAAjB,MAAwB,KAA5B,EAAmC;EACjC,aAAOqE,CAAC,CAACC,KAAF,GAAUC,GAAV,CAAcvE,CAAd,CAAP;EACD;;EAED,WAAOA,CAAP;EACD,GAND;;EAQA0B,EAAAA,OAAO,CAAC8C,cAAR,GAAyB,UAAUC,MAAV,EAAkB;EACzC,QAAIC,SAAS,GAAG7B,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAApF;EACA,QAAI8B,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,CAAhB;EACA,QAAIK,IAAI,GAAGL,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;EACA,WAAO,GAAGM,MAAH,CAAUD,IAAV,EAAgBC,MAAhB,CAAuBrD,OAAO,CAACgB,OAAR,CAAgBiC,SAAhB,CAAvB,EAAmDI,MAAnD,CAA0DL,SAA1D,EAAqE,IAArE,CAAP;EACD,GALD;EAMD,CA7G6B,CAA9B;EA8GA,IAAIM,KAAK,GAAGnD,GAAG,CAACC,UAAhB;EACA,IAAImD,KAAK,GAAGpD,GAAG,CAACG,MAAhB;EACA,IAAIkD,KAAK,GAAGrD,GAAG,CAACU,OAAhB;EACA,IAAI4C,KAAK,GAAGtD,GAAG,CAACY,QAAhB;EACA,IAAI2C,KAAK,GAAGvD,GAAG,CAACa,OAAhB;EACA,IAAI2C,KAAK,GAAGxD,GAAG,CAACsB,SAAhB;EACA,IAAImC,KAAK,GAAGzD,GAAG,CAACyB,OAAhB;EACA,IAAIiC,KAAK,GAAG1D,GAAG,CAAC6B,UAAhB;EACA,IAAI8B,KAAK,GAAG3D,GAAG,CAACgC,SAAhB;EACA,IAAI4B,MAAM,GAAG5D,GAAG,CAACmC,QAAjB;EACA,IAAI0B,MAAM,GAAG7D,GAAG,CAACuC,OAAjB;EACA,IAAIuB,MAAM,GAAG9D,GAAG,CAAC2C,cAAjB;EAEA,IAAI9B,OAAO,GAAGb,GAAG,CAACa,OAAlB;;EAEA,IAAIkD,SAAS,GAAG,SAASA,SAAT,CAAmB5F,CAAnB,EAAsB;EACpC,SAAO0C,OAAO,CAAC1C,CAAC,CAAC6F,QAAF,KAAe,CAAhB,CAAP,GAA4B,GAA5B,GAAkCnD,OAAO,CAAC1C,CAAC,CAAC8F,OAAF,EAAD,CAAzC,GAAyD,GAAzD,GAA+DpD,OAAO,CAAC1C,CAAC,CAAC+F,QAAF,EAAD,CAA7E;EACD,CAFD;EAGA;;;EAGA,IAAIC,YAAY,GAAG,SAASA,YAAT,CAAsB7B,KAAtB,EAA6B8B,KAA7B,EAAoCC,GAApC,EAAyCC,aAAzC,EAAwD;EACzE;EACA;EACA;EACA,MAAInG,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAT,CAAR,CAJyE;;EAMzE,MAAIkC,IAAI,GAAGrG,CAAC,CAACsG,iBAAF,MAAyB,CAApC;EACA,MAAIC,KAAK,GAAGF,IAAI,GAAGF,aAAa,GAAG,EAAnC,CAPyE;;EASzEI,EAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CATyE;;EAWzEvG,EAAAA,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAK,GAAGoC,KAAjB,CAAJ;EACA,MAAIC,OAAO,GAAGZ,SAAS,CAAC5F,CAAD,CAAvB,CAZyE;;EAczE,MAAIwG,OAAO,IAAIP,KAAf,EAAsB;EACpB;EACA,QAAIO,OAAO,GAAGN,GAAd,EAAmB;EACjB,aAAO,IAAP;EACD;EACF;;EAED,SAAO,KAAP;EACD,CAtBD;;EAwBA,IAAIO,UAAU,GAAGT,YAAjB;;EAIA,IAAIU,WAAW,GAAG,SAASA,WAAT,CAAqBrC,CAArB,EAAwB;EACxC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;EACA,MAAIC,GAAG,GAAGF,KAAK,CAACtC,CAAC,CAACyC,EAAH,CAAf;;EAEA,MAAID,GAAG,KAAK9D,SAAZ,EAAuB;EACrBgE,IAAAA,OAAO,CAACC,IAAR,CAAa,qCAAqC3C,CAAC,CAACyC,EAApD;EACA,WAAO,CAAP;EACD;;EAED,MAAID,GAAG,CAACI,GAAJ,KAAYlE,SAAhB,EAA2B;EACzB,WAAO8D,GAAG,CAACpC,MAAX;EACD,GAXuC;;;EAcxC,MAAIyC,GAAG,GAAGL,GAAG,CAACpC,MAAd;EACA,MAAI0C,GAAG,GAAGN,GAAG,CAACpC,MAAJ,GAAa,CAAvB,CAfwC;;EAiBxC,MAAIoC,GAAG,CAACO,GAAJ,KAAY,GAAhB,EAAqB;EACnBD,IAAAA,GAAG,GAAGD,GAAG,GAAG,CAAZ;EACD;;EAED,MAAIG,KAAK,GAAGR,GAAG,CAACI,GAAJ,CAAQI,KAAR,CAAc,IAAd,CAAZ;EACA,MAAIC,QAAQ,GAAGb,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUkD,KAAK,CAAC,CAAD,CAAf,EAAoBA,KAAK,CAAC,CAAD,CAAzB,EAA8BH,GAA9B,CAAzB;;EAEA,MAAII,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAOJ,GAAP;EACD;;EAED,SAAOC,GAAP;EACD,CA7BD;;EA+BA,IAAII,KAAK,GAAGb,WAAZ;EAEA,IAAIc,MAAM,GAAG;EACZ,SAAO,mBADK;EAEZ,SAAO,yDAFK;EAGZ,8BAA4B,+CAHhB;EAIZ,WAAS,kBAJG;EAKZ,SAAO,+DALK;EAMZ,4BAA0B,cANd;EAOZ,SAAO,mKAPK;EAQZ,YAAU,SARE;EASZ,SAAO,gCATK;EAUZ,SAAO,2IAVK;EAWZ,SAAO,WAXK;EAYZ,SAAO,sGAZK;EAaZ,WAAS,4BAbG;EAcZ,SAAO,uBAdK;EAeZ,SAAO,uIAfK;EAgBZ,YAAU,wBAhBE;EAiBZ,WAAS,gCAjBG;EAkBZ,SAAO,WAlBK;EAmBZ,SAAO,4HAnBK;EAoBZ,8BAA4B,UApBhB;EAqBZ,WAAS,SArBG;EAsBZ,SAAO,yBAtBK;EAuBZ,4BAA0B,+IAvBd;EAwBZ,4BAA0B,uBAxBd;EAyBZ,4BAA0B,UAzBd;EA0BZ,4BAA0B,wBA1Bd;EA2BZ,4BAA0B,iBA3Bd;EA4BZ,4BAA0B,SA5Bd;EA6BZ,4BAA0B,YA7Bd;EA8BZ,SAAO,uOA9BK;EA+BZ,4BAA0B,UA/Bd;EAgCZ,SAAO,sFAhCK;EAiCZ,4BAA0B,oWAjCd;EAkCZ,SAAO,4EAlCK;EAmCZ,4BAA0B,YAnCd;EAoCZ,SAAO,qBApCK;EAqCZ,4BAA0B,yBArCd;EAsCZ,4BAA0B,4GAtCd;EAuCZ,SAAO,kHAvCK;EAwCZ,UAAQ,eAxCI;EAyCZ,6BAA2B,SAzCf;EA0CZ,6BAA2B,cA1Cf;EA2CZ,UAAQ,yBA3CI;EA4CZ,6BAA2B,sCA5Cf;EA6CZ,6BAA2B,SA7Cf;EA8CZ,UAAQ,8GA9CI;EA+CZ,gCAA8B,YA/ClB;EAgDZ,UAAQ,8BAhDI;EAiDZ,UAAQ,uFAjDI;EAkDZ,+BAA6B,YAlDjB;EAmDZ,6BAA2B,qFAnDf;EAoDZ,UAAQ,sDApDI;EAqDZ,UAAQ,8FArDI;EAsDZ,+BAA6B,mBAtDjB;EAuDZ,4BAA0B,yBAvDd;EAwDZ,SAAO,+PAxDK;EAyDZ,6BAA2B,eAzDf;EA0DZ,UAAQ,YA1DI;EA2DZ,YAAU,cA3DE;EA4DZ,6BAA2B,4DA5Df;EA6DZ,UAAQ,aA7DI;EA8DZ,6BAA2B,oHA9Df;EA+DZ,UAAQ,iDA/DI;EAgEZ,6BAA2B,0BAhEf;EAiEZ,6BAA2B,mCAjEf;EAkEZ,6BAA2B,oGAlEf;EAmEZ,UAAQ,kJAnEI;EAoEZ,UAAQ,4BApEI;EAqEZ,6BAA2B,gEArEf;EAsEZ,6BAA2B,gBAtEf;EAuEZ,6BAA2B,0GAvEf;EAwEZ,UAAQ,8GAxEI;EAyEZ,6BAA2B,WAzEf;EA0EZ,6BAA2B,0BA1Ef;EA2EZ,6BAA2B,YA3Ef;EA4EZ,6BAA2B,yBA5Ef;EA6EZ,UAAQ,0BA7EI;EA8EZ,6BAA2B,sBA9Ef;EA+EZ,6BAA2B,qLA/Ef;EAgFZ,6BAA2B,UAhFf;EAiFZ,UAAQ,kVAjFI;EAkFZ,UAAQ,sHAlFI;EAmFZ,6BAA2B,0EAnFf;EAoFZ,UAAQ,yHApFI;EAqFZ,UAAQ,aArFI;EAsFZ,6BAA2B,WAtFf;EAuFZ,6BAA2B,YAvFf;EAwFZ,UAAQ,2BAxFI;EAyFZ,+BAA6B,2BAzFjB;EA0FZ,UAAQ,cA1FI;EA2FZ,WAAS,yCA3FG;EA4FZ,WAAS;EA5FG,CAAb;;EA+FA,IAAIC,QAAQ,gBAAgBxF,MAAM,CAACyF,MAAP,CAAc;EACzCC,EAAAA,SAAS,EAAE,IAD8B;EAEzC,aAAWH;EAF8B,CAAd,CAA5B;;;EAMA,IAAII,SAAS,GAAG,CAAC,QAAD,EAAW,SAAX,EAAsB,MAAtB,EAA8B,UAA9B,EAA0C,WAA1C,EAAuD,QAAvD,EAAiE,QAAjE,EAA2E,OAA3E,EAAoF,QAApF,EAA8F,QAA9F,EAAwG,QAAxG,EAAkH,SAAlH,EAA6H,YAA7H,EAA2I,KAA3I,CAAhB;EAEA,IAAIC,IAAI,GAAGlG,yBAAyB,CAAC8F,QAAD,CAApC;EAEA,IAAIK,GAAG,GAAG,EAAV;EACA7F,MAAM,CAAC8F,IAAP,CAAYF,IAAZ,EAAkBhH,OAAlB,CAA0B,UAAU4C,CAAV,EAAa;EACrC,MAAI4D,KAAK,GAAG5D,CAAC,CAAC4D,KAAF,CAAQ,GAAR,CAAZ;EACA,MAAIR,GAAG,GAAG;EACRpC,IAAAA,MAAM,EAAEuD,MAAM,CAACX,KAAK,CAAC,CAAD,CAAN,CADN;EAERD,IAAAA,GAAG,EAAEC,KAAK,CAAC,CAAD;EAFF,GAAV;;EAKA,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;EACZR,IAAAA,GAAG,CAACI,GAAJ,GAAUI,KAAK,CAAC,CAAD,CAAf;EACD;;EAED,MAAIY,KAAK,GAAGJ,IAAI,CAACpE,CAAD,CAAJ,CAAQ4D,KAAR,CAAc,GAAd,CAAZ;EACAY,EAAAA,KAAK,CAACpH,OAAN,CAAc,UAAU8B,GAAV,EAAe;EAC3BA,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,aAAZ,EAA2B,UAAUsE,MAAV,EAAkB/J,GAAlB,EAAuB;EACtDA,MAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;EACA,aAAOyJ,SAAS,CAACzJ,GAAD,CAAT,GAAiB,GAAxB;EACD,KAHK,CAAN;EAIA2J,IAAAA,GAAG,CAACnF,GAAD,CAAH,GAAWkE,GAAX;EACD,GAND;EAOD,CAnBD;EAoBAiB,GAAG,CAAC,KAAD,CAAH,GAAa;EACXrD,EAAAA,MAAM,EAAE,CADG;EAEX2C,EAAAA,GAAG,EAAE,GAFM;;EAAA,CAAb;;EAMA,KAAK,IAAI7D,CAAC,GAAG,CAAC,EAAd,EAAkBA,CAAC,IAAI,EAAvB,EAA2BA,CAAC,IAAI,GAAhC,EAAqC;EACnC,MAAIpF,GAAG,GAAGoF,CAAV;;EAEA,MAAIpF,GAAG,GAAG,CAAV,EAAa;EACXA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAIgK,IAAI,GAAG,YAAYhK,GAAvB;EACA2J,EAAAA,GAAG,CAACK,IAAD,CAAH,GAAY;EACV1D,IAAAA,MAAM,EAAElB,CAAC,GAAG,CAAC,CADH;EAEV;EACA6D,IAAAA,GAAG,EAAE,GAHK;;EAAA,GAAZ;EAMAe,EAAAA,IAAI,GAAG,YAAYhK,GAAnB,CAdmC;;EAgBnC2J,EAAAA,GAAG,CAACK,IAAD,CAAH,GAAY;EACV1D,IAAAA,MAAM,EAAElB,CAAC,GAAG,CAAC,CADH;EAEV6D,IAAAA,GAAG,EAAE;EAFK,GAAZ;EAID;EACD;;;EAGA,IAAIgB,MAAM,GAAGN,GAAb;EAGA;EACA;;EACA,IAAIO,UAAU,GAAG,KAAjB;EACA;;EAEA,IAAIC,QAAQ,GAAG,SAASA,QAAT,GAAoB;EACjC,MAAI,OAAOC,IAAP,KAAgB,WAAhB,IAA+B,OAAOA,IAAI,CAACC,cAAZ,KAA+B,WAAlE,EAA+E;EAC7E,WAAO,IAAP;EACD;;EAED,MAAIC,MAAM,GAAGF,IAAI,CAACC,cAAL,EAAb;;EAEA,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,eAAd,KAAkC,WAAvE,EAAoF;EAClF,WAAO,IAAP;EACD;;EAED,MAAIC,QAAQ,GAAGF,MAAM,CAACC,eAAP,GAAyBE,QAAxC;;EAEA,MAAI,CAACD,QAAL,EAAe;EACb,WAAO,IAAP;EACD;;EAED,SAAOA,QAAQ,CAAC7E,WAAT,EAAP;EACD,CAlBD;;EAoBA,IAAI+E,OAAO,GAAG,SAASA,OAAT,GAAmB;EAC/B,MAAIF,QAAQ,GAAGL,QAAQ,EAAvB;;EAEA,MAAIK,QAAQ,KAAK,IAAjB,EAAuB;EACrB,WAAON,UAAP;EACD;;EAED,SAAOM,QAAP;EACD,CARD;;;EAWA,IAAIG,SAAS,GAAGD,OAAhB;EAEA,IAAIE,QAAQ,GAAG,oBAAf;EACA,IAAIC,QAAQ,GAAG,aAAf;EACA,IAAIC,SAAS,GAAG,oBAAhB;EACA,IAAIC,SAAS,GAAG,oBAAhB;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBhL,GAAhB,EAAqB;EAChCA,EAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;;EAEA,MAAIA,GAAG,GAAG,CAAC,EAAP,IAAaA,GAAG,GAAG,EAAvB,EAA2B;EACzBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CADyB;;EAGzBA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAHyB;;EAKzB,WAAO,YAAYA,GAAnB;EACD;;EAED,SAAO,IAAP;EACD,CAZD;;EAcA,IAAIiL,WAAW,GAAG,SAASA,WAAT,CAAqBtC,EAArB,EAAyB;EACzC;EACA,MAAIhJ,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASqK,QAAT,CAAR;;EAEA,MAAIjL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GANwC;;;EASzCA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASuK,SAAT,CAAJ;;EAEA,MAAInL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAbwC;;;EAgBzCA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASwK,SAAT,CAAJ;;EAEA,MAAIpL,CAAC,KAAK,IAAV,EAAgB;EACd,QAAIK,GAAG,GAAG6J,MAAM,CAAClK,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;EACA,WAAOqL,MAAM,CAAChL,GAAD,CAAb;EACD,GArBwC;;;EAwBzCL,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASsK,QAAT,CAAJ;;EAEA,MAAIlL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,MAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD;;EAED,SAAO,IAAP;EACD,CA/BD;;EAiCA,IAAIuL,aAAa,GAAGD,WAApB;EAEA,IAAIE,KAAK,GAAGR,SAAS,EAArB;;EAEA,IAAIS,MAAM,GAAGtH,MAAM,CAAC8F,IAAP,CAAYK,MAAZ,EAAoBoB,MAApB,CAA2B,UAAUC,CAAV,EAAahG,CAAb,EAAgB;EACtD,MAAIiG,IAAI,GAAGjG,CAAC,CAAC4D,KAAF,CAAQ,GAAR,EAAa,CAAb,KAAmB,EAA9B;EACAqC,EAAAA,IAAI,GAAGA,IAAI,CAAC9F,OAAL,CAAa,IAAb,EAAmB,GAAnB,CAAP;EACA6F,EAAAA,CAAC,CAACC,IAAD,CAAD,GAAUjG,CAAV;EACA,SAAOgG,CAAP;EACD,CALY,EAKV,EALU,CAAb;;EAOA,IAAI5F,SAAS,GAAG,SAASA,SAAT,CAAmBiD,EAAnB,EAAuB;EACrCA,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,QAAX,EAAqB,EAArB,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,8BAAX,EAA2C,EAA3C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,+BAAX,EAA4C,IAA5C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,gCAAX,EAA6C,IAA7C,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,aAAX,EAA0B,QAA1B,CAAL;EACAkD,EAAAA,EAAE,GAAGA,EAAE,CAAClD,OAAH,CAAW,WAAX,EAAwB,QAAxB,CAAL;EACA,SAAOkD,EAAP;EACD,CARD;;;EAWA,IAAI6C,QAAQ,GAAG,SAASA,QAAT,CAAkBhH,GAAlB,EAAuBgE,KAAvB,EAA8B;EAC3C,MAAI,CAAChE,GAAL,EAAU;EACR,WAAO2G,KAAP;EACD;;EAED,MAAIxC,EAAE,GAAGnE,GAAG,CAACoB,IAAJ,EAAT;EACA,MAAIsD,KAAK,GAAG1E,GAAG,CAAC0E,KAAJ,CAAU,GAAV,CAAZ,CAN2C;;EAQ3C,MAAIA,KAAK,CAACvE,MAAN,GAAe,CAAf,IAAoB6D,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,KAArD,EAA4D;EAC1DA,IAAAA,EAAE,GAAGO,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAA3B;EACD;;EAEDP,EAAAA,EAAE,GAAGA,EAAE,CAAChD,WAAH,EAAL;;EAEA,MAAI6C,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GAhB0C;;;EAmB3CA,EAAAA,EAAE,GAAGjD,SAAS,CAACiD,EAAD,CAAd;;EAEA,MAAIH,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,IAAjC,EAAuC;EACrC,WAAOA,EAAP;EACD,GAvB0C;;;EA0B3C,MAAIyC,MAAM,CAACK,cAAP,CAAsB9C,EAAtB,MAA8B,IAAlC,EAAwC;EACtC,WAAOyC,MAAM,CAACzC,EAAD,CAAb;EACD,GA5B0C;;;EA+B3C,MAAI,QAAQ+C,IAAR,CAAa/C,EAAb,MAAqB,IAAzB,EAA+B;EAC7B,QAAIgD,EAAE,GAAGT,aAAa,CAACvC,EAAD,CAAtB;;EAEA,QAAIgD,EAAJ,EAAQ;EACN,aAAOA,EAAP;EACD;EACF;;EAED,QAAM,IAAIC,KAAJ,CAAU,6CAA6CpH,GAA7C,GAAmD,sCAA7D,CAAN;EACD,CAxCD;;EA0CA,IAAIqH,IAAI,GAAGL,QAAX;EAEA,IAAIM,CAAC,GAAG;EACNC,EAAAA,WAAW,EAAE;EADP,CAAR;EAGAD,CAAC,CAACE,MAAF,GAAW,IAAX;EACAF,CAAC,CAACG,MAAF,GAAW,KAAX;EACAH,CAAC,CAACI,IAAF,GAAS,KAAT;;EAEAJ,CAAC,CAACK,GAAF,GAAQ,MAAR;;EAEAL,CAAC,CAAChL,IAAF,GAASgL,CAAC,CAACK,GAAX;EACAL,CAAC,CAACtL,KAAF,GAAU,SAAS,IAAnB;;EAEAsL,CAAC,CAACM,IAAF,GAAS,OAAT;EACAN,CAAC,CAAClI,IAAF,GAAS,QAAT;EACA;;EAEAE,MAAM,CAAC8F,IAAP,CAAYkC,CAAZ,EAAepJ,OAAf,CAAuB,UAAU4C,CAAV,EAAa;EAClCwG,EAAAA,CAAC,CAACxG,CAAC,GAAG,GAAL,CAAD,GAAawG,CAAC,CAACxG,CAAD,CAAd;EACD,CAFD;EAGA,IAAI+G,YAAY,GAAGP,CAAnB;;EAEA,IAAIQ,IAAI,GAAG,SAASA,IAAT,CAAcpG,CAAd,EAAiBzC,CAAjB,EAAoBd,EAApB,EAAwB4J,IAAxB,EAA8BC,QAA9B,EAAwC;EACjD,MAAInE,OAAO,GAAGnC,CAAC,CAACrE,CAAF,CAAIc,EAAJ,GAAd;;EAEA,MAAI0F,OAAO,KAAK5E,CAAhB,EAAmB;EACjB,WADiB;EAElB;;EAED,MAAIgJ,SAAS,GAAGD,QAAQ,KAAK,IAAb,GAAoB,IAApB,GAA2BtG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAA3C;EACA,MAAIE,QAAQ,GAAGxG,CAAC,CAACF,KAAjB,CARiD;;EAUjD,MAAI2G,IAAI,GAAGlJ,CAAC,GAAG4E,OAAf;EACAnC,EAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACE,IAAD,CAAZ,GAAqBI,IAAhC,CAXiD;EAYjD;;EAEA,MAAIJ,IAAI,KAAK,KAAb,EAAoB;EAClB;EACA;EACA,QAAI9F,IAAI,CAACC,GAAL,CAASiG,IAAT,IAAiB,EAAjB,IAAuBlJ,CAAC,GAAG,EAA/B,EAAmC;EACjCyC,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACH,IAAxB;EACD;EACF,GApBgD;;;EAuBjD,MAAIM,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAAvC,EAAwD;EACtD;EACAtG,IAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV,CAFsD;EAGvD,GA1BgD;EA2BjD;;;EAGA,MAAIE,QAAQ,GAAGP,YAAY,CAACE,IAAD,CAAZ,GAAqB,CAApC;;EAEA,SAAOrG,CAAC,CAACrE,CAAF,CAAIc,EAAJ,MAAYc,CAAnB,EAAsB;EACpByC,IAAAA,CAAC,CAACF,KAAF,IAAW4G,QAAX;EACD;;EAED,SAAO1G,CAAC,CAACrE,CAAF,CAAIc,EAAJ,MAAYc,CAAnB,EAAsB;EACpByC,IAAAA,CAAC,CAACF,KAAF,IAAW4G,QAAX;EACD,GAtCgD;;;EAyCjD,MAAIJ,QAAQ,KAAK,IAAb,IAAqBC,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAI2K,QAAJ,GAAvC,EAAwD;EACtD;EACAtG,IAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV;EACD;EACF,CA7CD;;;EAgDA,IAAIG,KAAK,GAAG;EACVjJ,EAAAA,IAAI,EAAE;EACJkJ,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAC,IAAL,IAAaA,CAAC,GAAG,IAAxB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,aAAP,EAAsB,MAAtB,EAA8B,IAA9B,CAAX;EACD;EANG,GADI;EASVjD,EAAAA,KAAK,EAAE;EACLsM,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAI,EAAtB;EACD,KAHI;EAILsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,UAAI5B,CAAC,GAAGqE,CAAC,CAACrE,CAAV;EACA,UAAIwG,OAAO,GAAGxG,CAAC,CAAC6F,QAAF,EAAd;EACA,UAAIgF,QAAQ,GAAGxG,CAAC,CAACF,KAAjB;EACA,UAAIyG,SAAS,GAAG5K,CAAC,CAACmL,WAAF,EAAhB;;EAEA,UAAI3E,OAAO,KAAK5E,CAAhB,EAAmB;EACjB;EACD,OAR2B;;;EAW5B,UAAIkJ,IAAI,GAAGlJ,CAAC,GAAG4E,OAAf;EACAnC,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAb,IAAoBQ,IAAI,GAAG,EAA3B,CAAX,CAZ4B;EAa5B;;EAEA,UAAIF,SAAS,KAAKvG,CAAC,CAACrE,CAAF,CAAImL,WAAJ,EAAlB,EAAqC;EACnC9G,QAAAA,CAAC,CAACF,KAAF,GAAU0G,QAAV;EACD,OAjB2B;;;EAoB5B,aAAOxG,CAAC,CAACrE,CAAF,CAAI6F,QAAJ,KAAiBjE,CAAxB,EAA2B;EACzByC,QAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAxB;EACD;;EAED,aAAOjG,CAAC,CAACrE,CAAF,CAAI6F,QAAJ,KAAiBjE,CAAxB,EAA2B;EACzByC,QAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAxB;EACD;EACF;EA/BI,GATG;EA0CVrL,EAAAA,IAAI,EAAE;EACJgM,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,EAArB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,SAAP,EAAkB,KAAlB,EAAyB,UAAzB,CAAX;EACD;EANG,GA1CI;EAkDVyI,EAAAA,IAAI,EAAE;EACJY,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHG;EAIJsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,UAAP,EAAmB,MAAnB,EAA2B,SAA3B,CAAX;EACD;EANG,GAlDI;EA0DVwI,EAAAA,MAAM,EAAE;EACNa,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B,aAAO6I,IAAI,CAACpG,CAAD,EAAIzC,CAAJ,EAAO,YAAP,EAAqB,QAArB,EAA+B,UAA/B,CAAX;EACD;EANK,GA1DE;EAkEVuI,EAAAA,MAAM,EAAE;EACNc,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,EAArB;EACD,KAHK;EAINsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B;EACAyC,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAAC+G,OAAF,CAAUxJ,CAAV,EAAauC,KAAvB;EACD;EAPK,GAlEE;EA2EV+F,EAAAA,WAAW,EAAE;EACXe,IAAAA,KAAK,EAAE,SAASA,KAAT,CAAerJ,CAAf,EAAkB;EACvB,aAAOA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAG,IAArB;EACD,KAHU;EAIXsJ,IAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB,EAAsB;EAC5B;EACAyC,MAAAA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACmG,YAAF,CAAe5I,CAAf,EAAkBuC,KAA5B;EACD;EAPU;EA3EH,CAAZ;;EAsFA,IAAI+G,MAAM,GAAG,SAASA,MAAT,CAAgB7G,CAAhB,EAAmBgH,KAAnB,EAA0B;EACrC,MAAItD,IAAI,GAAG9F,MAAM,CAAC8F,IAAP,CAAYiD,KAAZ,CAAX;EACA,MAAIM,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;;EAEA,OAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwE,IAAI,CAACjF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpC,QAAIE,CAAC,GAAGsE,IAAI,CAACxE,CAAD,CAAZ;EACA,QAAI3B,CAAC,GAAGyJ,KAAK,CAAC5H,CAAD,CAAb;;EAEA,QAAI7B,CAAC,KAAKmB,SAAV,EAAqB;EACnBnB,MAAAA,CAAC,GAAG0J,GAAG,CAAC7H,CAAD,CAAH,EAAJ;EACD;;EAED,QAAI,OAAO7B,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAGxD,QAAQ,CAACwD,CAAD,EAAI,EAAJ,CAAZ;EACD,KAVmC;;;EAapC,QAAI,CAACoJ,KAAK,CAACvH,CAAD,CAAL,CAASwH,KAAT,CAAerJ,CAAf,CAAL,EAAwB;EACtByC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;;EAEA,UAAIE,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,QAAAA,OAAO,CAACC,IAAR,CAAa,aAAavD,CAAb,GAAiB,IAAjB,GAAwB7B,CAArC;EACD;;EAED;EACD;;EAEDoJ,IAAAA,KAAK,CAACvH,CAAD,CAAL,CAASyH,MAAT,CAAgB7G,CAAhB,EAAmBzC,CAAnB;EACD;;EAED;EACD,CA/BD;;EAiCA,IAAI4J,MAAM,GAAGN,MAAb;EAEA,IAAIO,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,MAAzD,EAAiE,KAAjE,EAAwE,KAAxE,EAA+E,KAA/E,CAAlB;EACA,IAAIC,UAAU,GAAG,CAAC,SAAD,EAAY,UAAZ,EAAwB,OAAxB,EAAiC,OAAjC,EAA0C,KAA1C,EAAiD,MAAjD,EAAyD,MAAzD,EAAiE,QAAjE,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,UAAnG,EAA+G,UAA/G,CAAjB;;EAEA,SAASC,YAAT,GAAwB;EACtB,MAAI9E,GAAG,GAAG;EACR+E,IAAAA,GAAG,EAAE,CADG;;EAAA,GAAV;;EAKA,OAAK,IAAIrI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkI,WAAW,CAAC3I,MAAhC,EAAwCS,CAAC,EAAzC,EAA6C;EAC3CsD,IAAAA,GAAG,CAAC4E,WAAW,CAAClI,CAAD,CAAZ,CAAH,GAAsBA,CAAtB;EACD;;EAED,OAAK,IAAIsI,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGH,UAAU,CAAC5I,MAAjC,EAAyC+I,EAAE,EAA3C,EAA+C;EAC7ChF,IAAAA,GAAG,CAAC6E,UAAU,CAACG,EAAD,CAAX,CAAH,GAAsBA,EAAtB;EACD;;EAED,SAAOhF,GAAP;EACD;;EAED,IAAIiF,MAAM,GAAG;EACX,WAAS,SAASC,MAAT,GAAiB;EACxB,WAAON,WAAP;EACD,GAHU;EAIX,UAAQ,SAASO,KAAT,GAAgB;EACtB,WAAON,UAAP;EACD,GANU;EAOXO,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,WAAON,YAAY,EAAnB;EACD,GATU;EAUXpH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa2H,IAAb,EAAmB;EACtBT,IAAAA,WAAW,GAAGS,IAAI,CAAC,OAAD,CAAJ,IAAiBT,WAA/B;EACAC,IAAAA,UAAU,GAAGQ,IAAI,CAAC,MAAD,CAAJ,IAAgBR,UAA7B;EACD;EAbU,CAAb;;EAiBA,IAAIS,aAAa,GAAG,SAAS/C,WAAT,CAAqB/E,CAArB,EAAwBI,MAAxB,EAAgC;EAClD,MAAI,CAACA,MAAL,EAAa;EACX,WAAOJ,CAAP;EACD,GAHiD;;;EAMlD,MAAII,MAAM,KAAK,GAAf,EAAoB;EAClBA,IAAAA,MAAM,GAAG,OAAT;EACD,GARiD;EASlD;;;EAGA,MAAItG,GAAG,GAAG,CAAV,CAZkD;;EAclD,MAAI,4BAA4B0L,IAA5B,CAAiCpF,MAAjC,CAAJ,EAA8C;EAC5C;EACA,QAAI,MAAMoF,IAAN,CAAWpF,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD,KAJ2C;;;EAO5C,QAAI,MAAMiG,IAAN,CAAWpF,MAAX,MAAuB,IAA3B,EAAiC;EAC/BA,MAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;EACF,GAxBiD;;;EA2BlD,MAAI,mBAAmBiG,IAAnB,CAAwBpF,MAAxB,CAAJ,EAAqC;EACnCA,IAAAA,MAAM,GAAGA,MAAM,CAACb,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAT;EACD;;EAEDzF,EAAAA,GAAG,GAAGiO,UAAU,CAAC3H,MAAD,CAAhB,CA/BkD;;EAiClD,MAAIG,IAAI,CAACC,GAAL,CAAS1G,GAAT,IAAgB,GAApB,EAAyB;EACvBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,GAAZ;EACD,GAnCiD;EAoClD;EACA;;;EAGAA,EAAAA,GAAG,IAAI,CAAC,CAAR;;EAEA,MAAIA,GAAG,IAAI,CAAX,EAAc;EACZA,IAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,MAAI2I,EAAE,GAAG,YAAY3I,GAArB;EACA,MAAIwI,KAAK,GAAGtC,CAAC,CAACuC,SAAd;;EAEA,MAAID,KAAK,CAACG,EAAD,CAAT,EAAe;EACb;EACA;EACAzC,IAAAA,CAAC,CAACyC,EAAF,GAAOA,EAAP;EACD;;EAED,SAAOzC,CAAP;EACD,CAxDD;;EA0DA,IAAIgI,eAAe,GAAGF,aAAtB;;EAEA,IAAIG,SAAS,GAAG,SAASA,SAAT,CAAmBjI,CAAnB,EAAsB;EACpC,MAAI1B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACAF,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,MAAZ,EAAoB,EAApB,EAAwBE,WAAxB,EAAN,CAFoC;EAGpC;;EAEA,MAAIyI,GAAG,GAAG5J,GAAG,CAACjE,KAAJ,CAAU,6DAAV,CAAV;;EAEA,MAAI6N,GAAG,KAAK,IAAZ,EAAkB;EAChB;EACA,QAAI9C,CAAC,GAAGzB,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAd;;EAEA,QAAI9C,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,EAAjB,EAAqB;EACnB,aAAOpF,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAED,QAAI1O,CAAC,GAAGkK,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAd,CARgB;;EAUhB,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOzJ,MAAP,GAAgB,CAAhB,IAAqBhF,CAAC,GAAG,CAAzB,IAA8BA,CAAC,GAAG,EAAtC,EAA0C;EACxC,aAAOuG,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAEDnI,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOZ,CAAP,CAAJ;EACApF,IAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAAStM,CAAT,CAAJ;EACAuG,IAAAA,CAAC,GAAGA,CAAC,CAAC+G,OAAF,CAAUmB,GAAG,CAAC,CAAD,CAAH,IAAU,CAApB,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAcqC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAxB,CAAJ,CAjBgB;;EAmBhB,QAAIE,IAAI,GAAG9J,GAAG,CAACjE,KAAJ,CAAU,kBAAV,CAAX;;EAEA,QAAI+N,IAAI,KAAK,IAAT,IAAiBA,IAAI,CAAC,CAAD,CAAzB,EAA8B;EAC5BpI,MAAAA,CAAC,GAAGA,CAAC,CAACoI,IAAF,CAAOA,IAAI,CAAC,CAAD,CAAX,CAAJ;EACD;;EAED,WAAOpI,CAAP;EACD,GAjCmC;;;EAoCpCkI,EAAAA,GAAG,GAAG5J,GAAG,CAACjE,KAAJ,CAAU,mBAAV,CAAN;;EAEA,MAAI6N,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAAC,CAAD,CAAvB,EAA4B;EAC1B,QAAIG,EAAE,GAAG1E,MAAM,CAACuE,GAAG,CAAC,CAAD,CAAJ,CAAf,CAD0B;;;EAI1B,QAAIG,EAAE,GAAG,EAAL,IAAWA,EAAE,GAAG,CAApB,EAAuB;EACrB,aAAOrI,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD;;EAEDnI,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOkC,GAAG,CAAC,CAAD,CAAH,IAAU,CAAjB,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAACoI,IAAF,CAAOF,GAAG,CAAC,CAAD,CAAV,CAAJ;EACAlI,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAlDmC;;;EAqDpCA,EAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,SAAOnI,CAAP;EACD,CAvDD;;EAyDA,IAAIsI,WAAW,GAAGL,SAAlB;EAEA,IAAIM,YAAY,GAAG,CAAC,EAAD;EACnB,EADmB;EAEnB,EAFmB;EAGnB,EAHmB;EAInB,EAJmB;EAKnB,EALmB;EAMnB,EANmB;EAOnB,EAPmB;EAQnB,EARmB;EASnB,EATmB;EAUnB,EAVmB;EAWnB,EAXmB;EAAA,CAAnB;EAaA,IAAIC,cAAc,GAAGD,YAArB;;EAEA,IAAI9K,UAAU,GAAGD,GAAG,CAACC,UAArB;;EAEA,IAAIgL,OAAO,GAAG,SAASA,OAAT,CAAiBjG,GAAjB,EAAsB;EAClC;EACA,MAAIgG,cAAc,CAACjD,cAAf,CAA8B/C,GAAG,CAAClI,KAAlC,MAA6C,IAAjD,EAAuD;EACrD,WAAO,KAAP;EACD,GAJiC;;;EAOlC,MAAIkI,GAAG,CAAClI,KAAJ,KAAc,CAAlB,EAAqB;EACnB,QAAImD,UAAU,CAAC+E,GAAG,CAAC9E,IAAL,CAAV,IAAwB8E,GAAG,CAAC5H,IAAJ,IAAY,EAAxC,EAA4C;EAC1C,aAAO,IAAP;EACD,KAFD,MAEO;EACL,aAAO4H,GAAG,CAAC5H,IAAJ,IAAY,EAAnB;EACD;EACF,GAbiC;;;EAgBlC,MAAI8N,GAAG,GAAGF,cAAc,CAAChG,GAAG,CAAClI,KAAL,CAAd,IAA6B,CAAvC;;EAEA,MAAIkI,GAAG,CAAC5H,IAAJ,IAAY8N,GAAhB,EAAqB;EACnB,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAvBD;;EAyBA,IAAIC,SAAS,GAAGF,OAAhB;EAEA,IAAIG,QAAQ,GAAGnB,MAAM,CAACG,OAAP,EAAf;;EAEA,IAAIiB,SAAS,GAAG,SAASA,SAAT,GAAqB;EACnC,MAAIvK,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E;EACA,MAAIsK,KAAK,GAAGtK,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAlD;EACA,MAAIhB,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB,CAHmC;;EAKnC,MAAI,CAAChC,IAAD,IAASoL,KAAb,EAAoB;EAClBpL,IAAAA,IAAI,GAAGoL,KAAK,CAACpL,IAAb;EACD,GAPkC;;;EAUnCA,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAIqE,IAAJ,GAAW+E,WAAX,EAAf;EACA,SAAOpJ,IAAP;EACD,CAZD;;EAcA,IAAIqL,MAAM,GAAG;EACb;EACEC,EAAAA,GAAG,EAAE,gFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuBgB,OAAvB,EAAgCC,OAAhC,EAAyC;EAC9C,QAAI7O,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAI1F,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEwK,GAAG,CAAC,CAAD,CADD;EAER5N,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEsN,GAAG,CAAC,CAAD;EAHD,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDgI,IAAAA,eAAe,CAAChI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACAf,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CADa;EAsBb;EACEgJ,EAAAA,GAAG,EAAE,sGADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI1F,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEwK,GAAG,CAAC,CAAD,CADD;EAER5N,MAAAA,KAAK,EAAEP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAFtB;EAGRtN,MAAAA,IAAI,EAAEb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT;EAHN,KAAV;;EAMA,QAAI1F,GAAG,CAAClI,KAAJ,IAAa,EAAjB,EAAqB;EACnB;EACAkI,MAAAA,GAAG,CAAC5H,IAAJ,GAAWb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;EACA1F,MAAAA,GAAG,CAAClI,KAAJ,GAAYP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACD;;EAED,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAvBH,CAtBa;EA+Cb;EACEgJ,EAAAA,GAAG,EAAE,wGADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAnC;EACA,QAAItN,IAAI,GAAGb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB,CAF4B;;EAI5B,QAAIlI,CAAC,CAACoJ,OAAF,IAAa9O,KAAK,IAAI,EAA1B,EAA8B;EAC5BM,MAAAA,IAAI,GAAGb,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAf;EACA5N,MAAAA,KAAK,GAAGP,QAAQ,CAACmO,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAA/B;EACD;;EAED,QAAIxK,IAAI,GAAGwK,GAAG,CAAC,CAAD,CAAH,IAAU,IAAInG,IAAJ,GAAW+E,WAAX,EAArB;EACA,QAAItE,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEA;EAHE,KAAV;;EAMA,QAAI+N,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EA1BH,CA/Ca;EA2Eb;EACEgJ,EAAAA,GAAG,EAAE,iDADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CA3Ea;EAgGb;EACA;EACEgJ,EAAAA,GAAG,EAAE,uFADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAH,IAAU,EAAzB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CAjGa;EAsHb;EACEgJ,EAAAA,GAAG,EAAE,wBADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;EACA,QAAI/B,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAEoF,CAAC,CAACqJ,MAAF,CAASzO,IAAT,IAAiB;EAHf,KAAV;;EAMA,QAAI+N,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAnBH,CAtHa;EA2Ib;EACEgJ,EAAAA,GAAG,EAAE,4GADP;EAEEC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5N,KAAK,GAAGsO,QAAQ,CAACV,GAAG,CAAC,CAAD,CAAH,CAAOzI,WAAP,EAAD,CAApB;;EAEA,QAAI,CAACnF,KAAL,EAAY;EACV,aAAO,IAAP;EACD;;EAED,QAAIoD,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASlI,CAAC,CAACqJ,MAAX,CAApB;EACA,QAAI7G,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEA,KAFC;EAGRM,MAAAA,IAAI,EAAE4C,GAAG,CAAC6B,UAAJ,CAAe6I,GAAG,CAAC,CAAD,CAAlB;EAHE,KAAV;;EAMA,QAAIS,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,EAAIkI,GAAG,CAAC,CAAD,CAAP,CAAf;EACA,WAAOlI,CAAP;EACD;EAxBH,CA3Ia,EAoKV;EACD;EACAgJ,EAAAA,GAAG,EAAE,sBAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5J,GAAG,GAAG4J,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5B5J,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,wBAAZ,EAAsC,KAAtC,CAAN,CAH4B;;EAK5BjB,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAI7B,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAI/D,CAAC,GAAG,IAAIoG,IAAJ,EAAR;EACA,QAAIS,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEqB,CAAC,CAAC6F,QAAF,EAFC;EAGR5G,MAAAA,IAAI,EAAEe,CAAC,CAAC8F,OAAF;EAHE,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAzBA,CApKU,EA8LV;EACD;EACAgJ,EAAAA,GAAG,EAAE,iCAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAI5J,GAAG,GAAG4J,GAAG,CAAC,CAAD,CAAH,IAAU,EAApB,CAD4B;;EAG5B5J,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACA,QAAI7B,IAAI,GAAG3D,QAAQ,CAACuE,GAAG,CAACoB,IAAJ,EAAD,EAAa,EAAb,CAAnB;EACA,QAAI/D,CAAC,GAAG,IAAIoG,IAAJ,EAAR;EACA,QAAIS,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEqB,CAAC,CAAC6F,QAAF,EAFC;EAGR5G,MAAAA,IAAI,EAAEe,CAAC,CAAC8F,OAAF;EAHE,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EAvBA,CA9LU,EAsNV;EACD;EACAgJ,EAAAA,GAAG,EAAE,0BAFJ;EAGDC,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejJ,CAAf,EAAkBkI,GAAlB,EAAuB;EAC5B,QAAIY,KAAK,GAAG9I,CAAC,CAACqJ,MAAd;EACA,QAAI3L,IAAI,GAAGmL,SAAS,CAACX,GAAG,CAAC,CAAD,CAAJ,EAASY,KAAT,CAApB;EACA,QAAInN,CAAC,GAAG,IAAIoG,IAAJ,EAAR,CAH4B;;EAK5B,QAAI+G,KAAK,CAACxO,KAAN,IAAe,CAACwO,KAAK,CAAClO,IAA1B,EAAgC;EAC9BkO,MAAAA,KAAK,CAAClO,IAAN,GAAa,CAAb;EACD;;EAED,QAAI4H,GAAG,GAAG;EACR9E,MAAAA,IAAI,EAAEA,IADE;EAERpD,MAAAA,KAAK,EAAEwO,KAAK,CAACxO,KAAN,IAAeqB,CAAC,CAAC6F,QAAF,EAFd;EAGR5G,MAAAA,IAAI,EAAEkO,KAAK,CAAClO,IAAN,IAAce,CAAC,CAAC8F,OAAF;EAHZ,KAAV;;EAMA,QAAIkH,SAAS,CAACnG,GAAD,CAAT,KAAmB,KAAvB,EAA8B;EAC5BxC,MAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,aAAOE,CAAP;EACD;;EAEDmH,IAAAA,MAAM,CAACnH,CAAD,EAAIwC,GAAJ,CAAN;EACAxC,IAAAA,CAAC,GAAGsI,WAAW,CAACtI,CAAD,CAAf;EACA,WAAOA,CAAP;EACD;EA1BA,CAtNU,CAAb;EAkPA,IAAIsJ,QAAQ,GAAGP,MAAf;;EAGA,IAAIQ,MAAM,GAAG,SAASA,MAAT,CAAgBvJ,CAAhB,EAAmB;EAC9BA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAACyH,GAAL,EAAV;EACA5L,EAAAA,MAAM,CAAC8F,IAAP,CAAY1D,CAAC,CAACqJ,MAAF,IAAY,EAAxB,EAA4B7M,OAA5B,CAAoC,UAAU4C,CAAV,EAAa;EAC/C,QAAI,OAAOY,CAAC,CAACZ,CAAD,CAAR,KAAgB,UAApB,EAAgC;EAC9BY,MAAAA,CAAC,GAAGA,CAAC,CAACZ,CAAD,CAAD,CAAKY,CAAC,CAACqJ,MAAF,CAASjK,CAAT,CAAL,CAAJ;EACD;EACF,GAJD;EAKA,SAAOY,CAAP;EACD,CARD;;EAUA,IAAIyJ,KAAK,GAAG;EACVD,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaxJ,CAAb,EAAgB;EACnB,WAAOuJ,MAAM,CAACvJ,CAAD,CAAb;EACD,GAHS;EAIV8I,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe9I,CAAf,EAAkB;EACvB,WAAOuJ,MAAM,CAACvJ,CAAD,CAAb;EACD,GANS;EAOV0J,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1J,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAO,EAAP,CAAJ,CAF2B;;EAI3B,WAAOhG,CAAP;EACD,GAZS;EAaV2J,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkB3J,CAAlB,EAAqB;EAC7BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,KAAT,CAAJ;EACA5J,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAlBS;EAmBV6J,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7J,CAAnB,EAAsB;EAC/BA,IAAAA,CAAC,GAAGuJ,MAAM,CAACvJ,CAAD,CAAV;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,KAAd,CAAJ;EACA9J,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,WAAOnI,CAAP;EACD,GAxBS;EAyBV+J,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB/J,CAAnB,EAAsB;EAC/B,QAAItC,IAAI,GAAG6L,MAAM,CAACvJ,CAAD,CAAN,CAAUtC,IAAV,EAAX;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAACxC,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAF+B;;EAI/B,WAAOsC,CAAP;EACD,GA9BS;EA+BV,eAAa,SAASgK,QAAT,CAAkBhK,CAAlB,EAAqB;EAChC,QAAItC,IAAI,GAAG6L,MAAM,CAACvJ,CAAD,CAAN,CAAUtC,IAAV,EAAX;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACE,GAAF,CAAM,CAACxC,IAAD,EAAO,EAAP,EAAW,EAAX,EAAe,EAAf,EAAmB,CAAnB,EAAsB,CAAtB,CAAN,CAAJ,CAFgC;;EAIhC,WAAOsC,CAAP;EACD;EApCS,CAAZ;EAsCAyJ,KAAK,CAAC,eAAD,CAAL,GAAyBA,KAAK,CAAC,WAAD,CAA9B;EACA,IAAIQ,UAAU,GAAGR,KAAjB;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIS,YAAY,GAAG,UAAnB;EACA,IAAIC,QAAQ,GAAG;EACbzM,EAAAA,IAAI,EAAE,IAAIqE,IAAJ,GAAW+E,WAAX,EADO;EAEbxM,EAAAA,KAAK,EAAE,CAFM;EAGbM,EAAAA,IAAI,EAAE;EAHO,CAAf;;EAMA,IAAIwP,WAAW,GAAG,SAASA,WAAT,CAAqBpK,CAArB,EAAwBkI,GAAxB,EAA6BY,KAA7B,EAAoC;EACpD,MAAIuB,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;EAEA,OAAK,IAAInL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmL,KAAK,CAAC5L,MAA1B,EAAkCS,CAAC,EAAnC,EAAuC;EACrC,QAAIpF,GAAG,GAAGoO,GAAG,CAAChJ,CAAD,CAAH,IAAU4J,KAAK,CAACuB,KAAK,CAACnL,CAAD,CAAN,CAAf,IAA6BiL,QAAQ,CAACE,KAAK,CAACnL,CAAD,CAAN,CAArC,IAAmD,CAA7D;EACAc,IAAAA,CAAC,GAAGA,CAAC,CAACqK,KAAK,CAACnL,CAAD,CAAN,CAAD,CAAYpF,GAAZ,CAAJ;EACD;;EAED,SAAOkG,CAAP;EACD,CATD;;;EAYA,IAAIsK,YAAY,GAAG,SAASA,YAAT,CAAsBtK,CAAtB,EAAyBwC,GAAzB,EAA8BsG,KAA9B,EAAqC;EACtDtG,EAAAA,GAAG,GAAG5E,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkBJ,QAAlB,EAA4BrB,KAA5B,EAAmCtG,GAAnC,CAAN;EACA,MAAIkB,IAAI,GAAG9F,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,CAAX;;EAEA,OAAK,IAAItD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwE,IAAI,CAACjF,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpC,QAAImH,IAAI,GAAG3C,IAAI,CAACxE,CAAD,CAAf,CADoC;;EAGpC,QAAIc,CAAC,CAACqG,IAAD,CAAD,KAAY3H,SAAZ,IAAyB,OAAOsB,CAAC,CAACqG,IAAD,CAAR,KAAmB,UAAhD,EAA4D;EAC1D;EACD,KALmC;;;EAQpC,QAAI7D,GAAG,CAAC6D,IAAD,CAAH,KAAc,IAAd,IAAsB7D,GAAG,CAAC6D,IAAD,CAAH,KAAc3H,SAApC,IAAiD8D,GAAG,CAAC6D,IAAD,CAAH,KAAc,EAAnE,EAAuE;EACrE;EACD;;EAED,QAAIvM,GAAG,GAAG0I,GAAG,CAAC6D,IAAD,CAAH,IAAayC,KAAK,CAACzC,IAAD,CAAlB,IAA4B8D,QAAQ,CAAC9D,IAAD,CAApC,IAA8C,CAAxD;EACArG,IAAAA,CAAC,GAAGA,CAAC,CAACqG,IAAD,CAAD,CAAQvM,GAAR,CAAJ;EACD;;EAED,SAAOkG,CAAP;EACD,CArBD;;;EAwBA,IAAIwK,UAAU,GAAG,SAASA,UAAT,CAAoBxK,CAApB,EAAuB7B,KAAvB,EAA8B+K,OAA9B,EAAuC;EACtD,MAAIJ,KAAK,GAAG9I,CAAC,CAACqJ,MAAF,IAAYc,QAAxB,CADsD;;EAGtD,MAAI,OAAOhM,KAAP,KAAiB,QAArB,EAA+B;EAC7B,QAAIA,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG+L,YAArB,IAAqClK,CAAC,CAACkH,MAAF,KAAa,KAAtD,EAA6D;EAC3DxE,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb;EACAD,MAAAA,OAAO,CAACC,IAAR,CAAa,uDAAb;EACD;;EAED3C,IAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAV;EACA,WAAO6B,CAAP;EACD,GAXqD;;;EActDA,EAAAA,CAAC,CAACF,KAAF,GAAUiC,IAAI,CAACyH,GAAL,EAAV,CAdsD;;EAgBtD,MAAIxJ,CAAC,CAACqJ,MAAF,IAAY7L,GAAG,CAACY,QAAJ,CAAa4B,CAAC,CAACqJ,MAAf,CAAZ,IAAsCzL,MAAM,CAAC8F,IAAP,CAAY1D,CAAC,CAACqJ,MAAd,EAAsB5K,MAAtB,GAA+B,CAAzE,EAA4E;EAC1E,QAAIgM,GAAG,GAAGH,YAAY,CAACtK,CAAD,EAAI8I,KAAJ,EAAWqB,QAAX,CAAtB;;EAEA,QAAIM,GAAG,CAACC,OAAJ,EAAJ,EAAmB;EACjB1K,MAAAA,CAAC,CAACF,KAAF,GAAU2K,GAAG,CAAC3K,KAAd;EACD;EACF,GAtBqD;;;EAyBtD,MAAI3B,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKO,SAA5B,IAAyCP,KAAK,KAAK,EAAvD,EAA2D;EACzD,WAAO6B,CAAP,CADyD;EAE1D,GA3BqD;;;EA8BtD,MAAIxC,GAAG,CAACG,MAAJ,CAAWQ,KAAX,MAAsB,IAA1B,EAAgC;EAC9B6B,IAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAK,CAAC0B,OAAN,EAAV;EACA,WAAOG,CAAP;EACD,GAjCqD;;;EAoCtD,MAAIxC,GAAG,CAACU,OAAJ,CAAYC,KAAZ,MAAuB,IAA3B,EAAiC;EAC/B6B,IAAAA,CAAC,GAAGoK,WAAW,CAACpK,CAAD,EAAI7B,KAAJ,EAAW2K,KAAX,CAAf;EACA,WAAO9I,CAAP;EACD,GAvCqD;;;EA0CtD,MAAIxC,GAAG,CAACY,QAAJ,CAAaD,KAAb,MAAwB,IAA5B,EAAkC;EAChC;EACA,QAAIA,KAAK,CAAC2B,KAAV,EAAiB;EACfE,MAAAA,CAAC,CAACF,KAAF,GAAU3B,KAAK,CAAC2B,KAAhB;EACAE,MAAAA,CAAC,CAACyC,EAAF,GAAOtE,KAAK,CAACsE,EAAb;EACA,aAAOzC,CAAP;EACD;;EAEDA,IAAAA,CAAC,GAAGsK,YAAY,CAACtK,CAAD,EAAI7B,KAAJ,EAAW2K,KAAX,CAAhB;EACA,WAAO9I,CAAP;EACD,GApDqD;;;EAuDtD,MAAI,OAAO7B,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAO6B,CAAP;EACD,GAzDqD;;;EA4DtD7B,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,8DAAd,EAA8E,EAA9E,CAAR;EACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR;EACApB,EAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,KAAd,EAAqB,GAArB,EAA0BG,IAA1B,EAAR,CA9DsD;;EAgEtD,MAAIuK,UAAU,CAAC1E,cAAX,CAA0BpH,KAA1B,MAAqC,IAAzC,EAA+C;EAC7C6B,IAAAA,CAAC,GAAGiK,UAAU,CAAC9L,KAAD,CAAV,CAAkB6B,CAAlB,CAAJ;EACA,WAAOA,CAAP;EACD,GAnEqD;;;EAsEtD,OAAK,IAAId,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoK,QAAQ,CAAC7K,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;EACxC,QAAIzF,CAAC,GAAG0E,KAAK,CAAC9D,KAAN,CAAYiP,QAAQ,CAACpK,CAAD,CAAR,CAAY8J,GAAxB,CAAR;;EAEA,QAAIvP,CAAJ,EAAO;EACL,UAAIkR,IAAI,GAAGrB,QAAQ,CAACpK,CAAD,CAAR,CAAY+J,KAAZ,CAAkBjJ,CAAlB,EAAqBvG,CAArB,EAAwByP,OAAxB,CAAX;;EAEA,UAAIyB,IAAI,KAAK,IAAb,EAAmB;EACjB,eAAOA,IAAP;EACD;EACF;EACF;;EAED,MAAI3K,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,IAAAA,OAAO,CAACC,IAAR,CAAa,2CAA2CxE,KAA3C,GAAmD,GAAhE;EACD;;EAED6B,EAAAA,CAAC,CAACF,KAAF,GAAU,IAAV;EACA,SAAOE,CAAP;EACD,CAxFD;;EA0FA,IAAI7B,KAAK,GAAGqM,UAAZ;EAEA,IAAII,SAAS,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,CAAhB;EACA,IAAIC,QAAQ,GAAG,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgC,WAAhC,EAA6C,UAA7C,EAAyD,QAAzD,EAAmE,UAAnE,CAAf;EACA,IAAIC,IAAI,GAAG;EACT,WAAS,SAASpD,OAAT,GAAiB;EACxB,WAAOkD,SAAP;EACD,GAHQ;EAIT,UAAQ,SAASjD,MAAT,GAAgB;EACtB,WAAOkD,QAAP;EACD,GANQ;EAOT3K,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa2H,IAAb,EAAmB;EACtB+C,IAAAA,SAAS,GAAG/C,IAAI,CAAC,OAAD,CAAJ,IAAiB+C,SAA7B;EACAC,IAAAA,QAAQ,GAAGhD,IAAI,CAAC,MAAD,CAAJ,IAAgBgD,QAA3B;EACD;EAVQ,CAAX;EAcA;;EAEA,IAAIE,SAAS,GAAG,SAASA,SAAT,CAAmB/K,CAAnB,EAAsB;EACpC,MAAII,MAAM,GAAGJ,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAlC;EACA,MAAI4K,UAAU,GAAG5K,MAAM,GAAG,CAA1B;EACA,MAAI2F,MAAM,GAAG,IAAb,CAHoC;;EAKpC,MAAIxF,IAAI,CAACC,GAAL,CAASJ,MAAM,GAAG,CAAlB,MAAyB,GAA7B,EAAkC;EAChC2F,IAAAA,MAAM,GAAG,IAAT;;EAEA,QAAI3F,MAAM,IAAI,CAAd,EAAiB;EACfA,MAAAA,MAAM,GAAGG,IAAI,CAAC0K,KAAL,CAAW7K,MAAX,CAAT;EACD,KAFD,MAEO;EACLA,MAAAA,MAAM,GAAGG,IAAI,CAAC2K,IAAL,CAAU9K,MAAV,CAAT;EACD;EACF;;EAED,MAAI4K,UAAJ,EAAgB;EACd;EACA5K,IAAAA,MAAM,IAAI,CAAC,CAAX;EACAA,IAAAA,MAAM,GAAG5C,GAAG,CAACa,OAAJ,CAAY+B,MAAZ,EAAoB,CAApB,CAAT;EACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;EACD,GALD,MAKO;EACLA,IAAAA,MAAM,GAAG5C,GAAG,CAACa,OAAJ,CAAY+B,MAAZ,EAAoB,CAApB,CAAT;EACAA,IAAAA,MAAM,GAAG,MAAMA,MAAf;EACD;;EAEDA,EAAAA,MAAM,GAAGA,MAAM,GAAG,GAAT,GAAe2F,MAAxB,CAzBoC;;EA2BpC,MAAI3F,MAAM,KAAK,QAAf,EAAyB;EACvBA,IAAAA,MAAM,GAAG,GAAT;EACD;;EAED,SAAOA,MAAP;EACD,CAhCD;;EAkCA,IAAI+K,OAAO,GAAGJ,SAAd;EAEA,IAAI3G,MAAM,GAAG;EACX6B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnB,WAAOxC,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAACoL,OAAF,EAAd,CAAP;EACD,GAHU;EAIX,eAAa,SAASC,QAAT,CAAkBrL,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACsB,SAAJ,CAAcgM,IAAI,CAAC,OAAD,CAAJ,GAAgB9K,CAAC,CAACiG,GAAF,EAAhB,CAAd,CAAP;EACD,GANU;EAOX,gBAAc,SAASqF,SAAT,CAAmBtL,CAAnB,EAAsB;EAClC,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GATU;EAUX,iBAAe,SAASsF,UAAT,CAAoBvL,CAApB,EAAuB;EACpC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACiG,GAAF,EAAZ,CAAP;EACD,GAZU;EAaX,aAAW,SAASuF,MAAT,CAAgBxL,CAAhB,EAAmB;EAC5B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACiG,GAAF,EAAZ,CAAP;EACD,GAfU;EAgBXrL,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcoF,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACpF,IAAF,EAAP;EACD,GAlBU;EAmBX,kBAAgB,SAAS6Q,WAAT,CAAqBzL,CAArB,EAAwB;EACtC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAAP;EACD,GArBU;EAsBX,cAAY,SAAS8Q,OAAT,CAAiB1L,CAAjB,EAAoB;EAC9B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAP;EACD,GAxBU;EAyBXN,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvB,WAAOxC,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAAC2L,SAAF,EAAd,CAAP;EACD,GA3BU;EA4BX,iBAAe,SAASC,UAAT,CAAoB5L,CAApB,EAAuB;EACpC,WAAOxC,GAAG,CAACsB,SAAJ,CAAc2I,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAd,CAAP;EACD,GA9BU;EA+BX,kBAAgB,SAASuR,WAAT,CAAqB7L,CAArB,EAAwB;EACtC,WAAOA,CAAC,CAAC1F,KAAF,EAAP;EACD,GAjCU;EAkCX,mBAAiB,SAASwR,YAAT,CAAsB9L,CAAtB,EAAyB;EACxC,WAAOxC,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAAC1F,KAAF,EAAZ,CAAP;EACD,GApCU;EAqCX,eAAa,SAASyR,QAAT,CAAkB/L,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,EAAZ,CAAP;EACD,GAvCU;EAwCX,eAAa,SAAS0R,QAAT,CAAkBhM,CAAlB,EAAqB;EAChC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAP;EACD,GA1CU;EA2CX;EACAoD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrB,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAOA,IAAP;EACD;;EAEDA,IAAAA,IAAI,GAAG6C,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GArDU;EAsDX,gBAAc,SAASuO,SAAT,CAAmBjM,CAAnB,EAAsB;EAClC,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,QAAIA,IAAI,GAAG,CAAX,EAAc;EACZ,aAAO,IAAIgD,MAAJ,CAAWpB,MAAM,CAACU,CAAC,CAACtC,IAAF,EAAD,CAAN,CAAiBsB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAX,CAAP;EACD;;EAEDtB,IAAAA,IAAI,GAAG6C,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAP;EACA,WAAOA,IAAI,GAAG,KAAd;EACD,GA/DU;EAgEX,cAAY,SAASwO,OAAT,CAAiBlM,CAAjB,EAAoB;EAC9B,QAAItC,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;EACA,QAAIsN,UAAU,GAAGtN,IAAI,GAAG,CAAxB;EACA,QAAIY,GAAG,GAAGd,GAAG,CAACa,OAAJ,CAAYkC,IAAI,CAACC,GAAL,CAAS9C,IAAT,CAAZ,EAA4B,CAA5B,CAAV,CAH8B;;EAK9B,QAAIsN,UAAJ,EAAgB;EACd;EACA1M,MAAAA,GAAG,GAAGd,GAAG,CAACa,OAAJ,CAAYC,GAAZ,EAAiB,CAAjB,CAAN;EACAA,MAAAA,GAAG,GAAG,MAAMA,GAAZ;EACD;;EAED,WAAOA,GAAP;EACD,GA5EU;EA6EXtD,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcgF,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAChF,IAAF,EAAP;EACD,GA/EU;EAgFX,aAAW,SAASmR,MAAT,CAAgBnM,CAAhB,EAAmB;EAC5B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACoM,MAAF,EAAV,EAAsB,GAAtB,EAA2B1L,MAA3B,CAAkClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAlC,CAAP;EACD,GAlFU;EAmFXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACqM,MAAF,EAAP;EACD,GArFU;EAsFX,cAAY,SAASC,OAAT,CAAiBtM,CAAjB,EAAoB;EAC9B,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACqM,MAAF,EAAZ,CAAP;EACD,GAxFU;EAyFX,aAAW,SAASD,MAAT,CAAgBpM,CAAhB,EAAmB;EAC5B,WAAOA,CAAC,CAACoM,MAAF,EAAP;EACD,GA3FU;EA4FX,iBAAe,SAASG,SAAT,CAAmBvM,CAAnB,EAAsB;EACnC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACoM,MAAF,EAAZ,CAAP;EACD,GA9FU;EA+FXrG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAAC+F,MAAF,EAAP;EACD,GAjGU;EAkGX,gBAAc,SAASyG,SAAT,CAAmBxM,CAAnB,EAAsB;EAClC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAP;EACD,GApGU;EAqGXD,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9F,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAAC8F,MAAF,EAAP;EACD,GAvGU;EAwGX,gBAAc,SAAS2G,SAAT,CAAmBzM,CAAnB,EAAsB;EAClC,WAAOxC,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC8F,MAAF,EAAZ,CAAP;EACD,GA1GU;EA2GXsC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpI,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoI,IAAF,EAAP;EACD,GA7GU;EA8GXsE,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,WAAO,MAAMA,CAAC,CAAC0M,OAAF,EAAb;EACD,GAhHU;EAiHX/R,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBqF,CAAhB,EAAmB;EACzB,WAAOA,CAAC,CAACrF,MAAF,EAAP;EACD,GAnHU;EAoHXgS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3M,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GAtHU;EAuHXC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5M,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC4M,IAAF,EAAP;EACD,GAzHU;EA0HXtI,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBtE,CAAlB,EAAqB;EAC7B,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GA5HU;EA6HX1D,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBJ,CAAhB,EAAmB;EACzB,WAAOmL,OAAO,CAACnL,CAAD,CAAd;EACD,GA/HU;EAgIX6M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB7M,CAAjB,EAAoB;EAC3B,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACtC,IAAF,EAAV,EAAoB,GAApB,EAAyBgD,MAAzB,CAAgClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAhC,EAA4D,GAA5D,EAAiEoG,MAAjE,CAAwElD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAxE,CAAP;EACD,GAlIU;EAmIX;EACA,gBAAc,SAASkS,SAAT,CAAmB9M,CAAnB,EAAsB;EAClC,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2CoG,MAA3C,CAAkDlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAlD,EAAyE,GAAzE,EAA8E8F,MAA9E,CAAqFV,CAAC,CAACtC,IAAF,EAArF,CAAP;EACD,GAtIU;EAuIX;EACA,gBAAc,SAASqP,SAAT,CAAmB/M,CAAnB,EAAsB;EAClC,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAV,EAAiC,GAAjC,EAAsC8F,MAAtC,CAA6ClD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAA7C,EAAyE,GAAzE,EAA8EoG,MAA9E,CAAqFV,CAAC,CAACtC,IAAF,EAArF,CAAP;EACD,GA1IU;EA2IX;EACA,WAAS,SAASsP,IAAT,CAAchN,CAAd,EAAiB;EACxB,WAAO,GAAGU,MAAH,CAAUlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAV,EAAsC,GAAtC,EAA2CoG,MAA3C,CAAkDlD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAlD,CAAP;EACD,GA9IU;EA+IX;EACA;EACAqS,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajN,CAAb,EAAgB;EACnB,QAAItC,IAAI,GAAGsC,CAAC,CAACoE,MAAF,CAAS,UAAT,CAAX;EACA,QAAI9J,KAAK,GAAGkD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAZ,CAFmB;;EAInB,QAAIM,IAAI,GAAG4C,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAX;EACA,QAAIoL,IAAI,GAAGxI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACkN,GAAF,EAAZ,CAAX;EACA,QAAInH,MAAM,GAAGvI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC+F,MAAF,EAAZ,CAAb;EACA,QAAID,MAAM,GAAGtI,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC8F,MAAF,EAAZ,CAAb;EACA,QAAIqH,EAAE,GAAG3P,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC6F,WAAF,EAAZ,EAA6B,CAA7B,CAAT;;EACA,QAAIzF,MAAM,GAAG+K,OAAO,CAACnL,CAAD,CAApB;;EACA,WAAO,GAAGU,MAAH,CAAUhD,IAAV,EAAgB,GAAhB,EAAqBgD,MAArB,CAA4BpG,KAA5B,EAAmC,GAAnC,EAAwCoG,MAAxC,CAA+C9F,IAA/C,EAAqD,GAArD,EAA0D8F,MAA1D,CAAiEsF,IAAjE,EAAuE,GAAvE,EAA4EtF,MAA5E,CAAmFqF,MAAnF,EAA2F,GAA3F,EAAgGrF,MAAhG,CAAuGoF,MAAvG,EAA+G,GAA/G,EAAoHpF,MAApH,CAA2HyM,EAA3H,EAA+HzM,MAA/H,CAAsIN,MAAtI,CAAP,CAVmB;EAWpB,GA5JU;EA6JX,eAAa,SAASgN,QAAT,CAAkBpN,CAAlB,EAAqB;EAChC,QAAI1F,KAAK,GAAGkD,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAAC1F,KAAF,KAAY,CAAxB,CAAZ,CADgC;;EAGhC,QAAIM,IAAI,GAAG4C,GAAG,CAACa,OAAJ,CAAY2B,CAAC,CAACpF,IAAF,EAAZ,CAAX;EACA,WAAO,GAAG8F,MAAH,CAAUV,CAAC,CAACtC,IAAF,EAAV,EAAoB,GAApB,EAAyBgD,MAAzB,CAAgCpG,KAAhC,EAAuC,GAAvC,EAA4CoG,MAA5C,CAAmD9F,IAAnD,CAAP,CAJgC;EAKjC,GAlKU;EAmKX,aAAW,SAASyS,MAAT,CAAgBrN,CAAhB,EAAmB;EAC5B,WAAO,IAAI+B,IAAJ,CAAS/B,CAAC,CAACF,KAAX,EAAkBwN,WAAlB,EAAP,CAD4B;EAE7B,GArKU;EAsKX;EACAC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcvN,CAAd,EAAiB;EACrB,WAAO,GAAGU,MAAH,CAAU+G,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6CoG,MAA7C,CAAoDlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF8F,MAAjF,CAAwFV,CAAC,CAAChF,IAAF,EAAxF,CAAP;EACD,GAzKU;EA0KX,eAAa,SAASwS,QAAT,CAAkBxN,CAAlB,EAAqB;EAChC,WAAO,GAAGU,MAAH,CAAU+G,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAV,EAAwC,GAAxC,EAA6CoG,MAA7C,CAAoDlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAApD,EAA2E,IAA3E,EAAiF8F,MAAjF,CAAwFV,CAAC,CAACtC,IAAF,EAAxF,CAAP;EACD,GA5KU;EA6KX,cAAY,SAAS+P,OAAT,CAAiBzN,CAAjB,EAAoB;EAC9B,WAAO,GAAGU,MAAH,CAAUoK,IAAI,CAAC,OAAD,CAAJ,GAAgB9K,CAAC,CAACiG,GAAF,EAAhB,CAAV,EAAoC,GAApC,EAAyCvF,MAAzC,CAAgDlD,GAAG,CAACsB,SAAJ,CAAc2I,MAAM,CAAC,OAAD,CAAN,GAAkBzH,CAAC,CAAC1F,KAAF,EAAlB,CAAd,CAAhD,EAA6F,GAA7F,EAAkGoG,MAAlG,CAAyGlD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAAzG,CAAP;EACD,GA/KU;EAgLX,eAAa,SAAS8S,QAAT,CAAkB1N,CAAlB,EAAqB;EAChC,WAAO,GAAGU,MAAH,CAAUV,CAAC,CAACoL,OAAF,EAAV,EAAuB,GAAvB,EAA4B1K,MAA5B,CAAmClD,GAAG,CAACsB,SAAJ,CAAckB,CAAC,CAAC2L,SAAF,EAAd,CAAnC,EAAiE,GAAjE,EAAsEjL,MAAtE,CAA6ElD,GAAG,CAACyB,OAAJ,CAAYe,CAAC,CAACpF,IAAF,EAAZ,CAA7E,EAAoG,IAApG,EAA0G8F,MAA1G,CAAiHV,CAAC,CAAChF,IAAF,EAAjH,CAAP;EACD;EAlLU,CAAb;;EAqLA,IAAI2S,OAAO,GAAG;EACZ,cAAY,KADA;EAEZ,gBAAc,OAFF;EAGZ,cAAY,KAHA;EAIZ,cAAY,SAJA;EAKZ,aAAW,MALC;EAMZ,cAAY,MANA;EAOZlL,EAAAA,EAAE,EAAE,UAPQ;EAQZ,aAAW,YARC;EASZ,eAAa,cATD;EAUZ,eAAa,WAVD;EAWZ,cAAY,UAXA;EAYZ,gBAAc,MAZF;EAaZmL,EAAAA,GAAG,EAAE,YAbO;EAcZC,EAAAA,GAAG,EAAE,YAdO;EAeZC,EAAAA,GAAG,EAAE,SAfO;EAgBZ,gBAAc,SAhBF;EAiBZ,gBAAc,YAjBF;EAkBZ,gBAAc,YAlBF;EAmBZ,mBAAiB,YAnBL;EAoBZ,gBAAc,SApBF;EAqBZ,cAAY;EArBA,CAAd;EAuBAlQ,MAAM,CAAC8F,IAAP,CAAYiK,OAAZ,EAAqBnR,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC,SAAOgF,MAAM,CAAChF,CAAD,CAAN,GAAYgF,MAAM,CAACuJ,OAAO,CAACvO,CAAD,CAAR,CAAzB;EACD,CAFD;;EAIA,IAAI2O,WAAW,GAAG,SAASA,WAAT,CAAqB/N,CAArB,EAAwB;EACxC,MAAI1B,GAAG,GAAGE,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA9E,CADwC;;EAIxC,MAAIwB,CAAC,CAAC0K,OAAF,OAAgB,IAApB,EAA0B;EACxB,WAAO,EAAP;EACD,GANuC;;;EASxC,MAAItG,MAAM,CAACmB,cAAP,CAAsBjH,GAAtB,CAAJ,EAAgC;EAC9B,QAAI0P,GAAG,GAAG5J,MAAM,CAAC9F,GAAD,CAAN,CAAY0B,CAAZ,KAAkB,EAA5B;;EAEA,QAAI1B,GAAG,KAAK,MAAZ,EAAoB;EAClB0P,MAAAA,GAAG,GAAG1O,MAAM,CAAC0O,GAAD,CAAZ;;EAEA,UAAI1P,GAAG,KAAK,MAAZ,EAAoB;EAClB0P,QAAAA,GAAG,GAAGxQ,GAAG,CAACsB,SAAJ,CAAckP,GAAd,CAAN;EACD;EACF;;EAED,WAAOA,GAAP;EACD,GArBuC;;;EAwBxC,MAAI1P,GAAG,CAAC2P,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;EAC3B,QAAI3U,QAAQ,GAAG,YAAf;EACAgF,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAYjG,QAAZ,EAAsB,UAAU4U,CAAV,EAAaC,GAAb,EAAkB;EAC5CA,MAAAA,GAAG,GAAGA,GAAG,CAAC1O,WAAJ,GAAkBC,IAAlB,EAAN;;EAEA,UAAI0E,MAAM,CAACmB,cAAP,CAAsB4I,GAAtB,CAAJ,EAAgC;EAC9B,eAAO7O,MAAM,CAAC8E,MAAM,CAAC+J,GAAD,CAAN,CAAYnO,CAAZ,CAAD,CAAb;EACD;;EAED,aAAO,EAAP;EACD,KARK,CAAN;EASA,WAAO1B,GAAP;EACD;;EAED,SAAO0B,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,CAvCD;;EAyCA,IAAIgK,QAAQ,GAAGL,WAAf;EAEA,IAAIpP,GAAG,GAAGnB,GAAG,CAACa,OAAd;EACA,IAAI8B,cAAc,GAAG3C,GAAG,CAAC2C,cAAzB;EACA;EACA;;EAEA,IAAIyH,OAAO,GAAG;EACZyG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWrO,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GAHW;EAIZ2B,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYtO,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GANW;EAOZ4B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavO,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC2M,GAAF,EAAP;EACD,GATW;EAUZ6B,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcxO,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC2M,GAAF,OAAY,IAAZ,GAAmB,aAAnB,GAAmC,eAA1C;EACD,GAZW;EAaZ;EACA8B,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzO,CAAX,EAAc;EACf,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GAhBW;EAiBZgR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY1O,CAAZ,EAAe;EACjB;EACA,WAAOjG,QAAQ,CAACuF,MAAM,CAACU,CAAC,CAACtC,IAAF,EAAD,CAAN,CAAiBsB,MAAjB,CAAwB,CAAxB,EAA2B,CAA3B,CAAD,EAAgC,EAAhC,CAAf;EACD,GApBW;EAqBZ2P,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa3O,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GAvBW;EAwBZkR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5O,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD,GA1BW;EA2BZmR,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe7O,CAAf,EAAkB;EACvB,WAAO,MAAMA,CAAC,CAACtC,IAAF,EAAb;EACD,GA7BW;EA8BZ;EACA;EACAoR,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW9O,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GAlCW;EAmCZqC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/O,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GArCW;EAsCZsC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAahP,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GAxCW;EAyCZuC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjP,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAAC0M,OAAF,EAAP;EACD,GA3CW;EA4CZ;EACAwC,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlP,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC1F,KAAF,KAAY,CAAnB;EACD,GA/CW;EAgDZ6U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYnP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC1F,KAAF,KAAY,CAAb,CAAV;EACD,GAlDW;EAmDZ8U,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapP,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,aAAT,CAAP;EACD,GArDW;EAsDZiL,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrP,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,OAAT,CAAP;EACD,GAxDW;EAyDZ;EACAkL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWtP,CAAX,EAAc;EACf,WAAOA,CAAC,CAACkG,IAAF,EAAP;EACD,GA5DW;EA6DZqJ,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYvP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACkG,IAAF,EAAD,CAAV;EACD,GA/DW;EAgEZ;EACA;EACA;EACAvK,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWqE,CAAX,EAAc;EACf,WAAOA,CAAC,CAACpF,IAAF,EAAP;EACD,GArEW;EAsEZ4U,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxP,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACpF,IAAF,EAAD,CAAV;EACD,GAxEW;EAyEZ;EACA6U,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWzP,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC0P,SAAF,EAAP;EACD,GA5EW;EA6EZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY3P,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC0P,SAAF,EAAD,CAAV;EACD,GA/EW;EAgFZE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5P,CAAb,EAAgB;EACnB,WAAOrB,GAAG,CAACqB,CAAC,CAAC0P,SAAF,EAAD,EAAgB,CAAhB,CAAV;EACD,GAlFW;EAmFZ;EACA;EACA;EACAG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW7P,CAAX,EAAc;EACf,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GAxFW;EAyFZ0L,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY9P,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA3FW;EA4FZ2L,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa/P,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA9FW;EA+FZ4L,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchQ,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,CAAP;EACD,GAjGW;EAkGZ6L,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejQ,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GApGW;EAqGZ8L,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlQ,CAAX,EAAc;EACf,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GAvGW;EAwGZkK,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYnQ,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACiG,GAAF,EAAP;EACD,GA1GW;EA2GZmK,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAapQ,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoE,MAAF,CAAS,WAAT,CAAP;EACD,GA7GW;EA8GZiM,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrQ,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,CAAP;EACD,GAhHW;EAiHZkM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAetQ,CAAf,EAAkB;EACvB,WAAOA,CAAC,CAACoE,MAAF,CAAS,KAAT,EAAgB,CAAhB,CAAP;EACD,GAnHW;EAoHZ;EACAmM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvQ,CAAX,EAAc;EACf,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GAvHW;EAwHZyR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxQ,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GA1HW;EA2HZ0R,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazQ,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GA7HW;EA8HZ2R,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1Q,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACoI,IAAF,GAASrJ,WAAT,EAAP;EACD,GAhIW;EAiIZ;EACAqG,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWpF,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC2Q,GAAF,EAAP;EACD,GApIW;EAqIZC,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY5Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC2Q,GAAF,EAAD,CAAV;EACD,GAvIW;EAwIZE,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAW7Q,CAAX,EAAc;EACf,WAAOA,CAAC,CAACgG,IAAF,EAAP;EACD,GA1IW;EA2IZ8K,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY9Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAACgG,IAAF,EAAD,CAAV;EACD,GA7IW;EA8IZ;EACAvM,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWuG,CAAX,EAAc;EACf,WAAOA,CAAC,CAAC+F,MAAF,EAAP;EACD,GAjJW;EAkJZgL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAY/Q,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC+F,MAAF,EAAD,CAAV;EACD,GApJW;EAqJZ/F,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWgR,EAAX,EAAe;EAChB,WAAOA,EAAE,CAAClL,MAAH,EAAP;EACD,GAvJW;EAwJZmL,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYjR,CAAZ,EAAe;EACjB,WAAOrB,GAAG,CAACqB,CAAC,CAAC8F,MAAF,EAAD,CAAV;EACD,GA1JW;EA2JZ;EACAoL,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWlR,CAAX,EAAc;EACf,WAAOA,CAAC,CAACF,KAAF,GAAUE,CAAC,CAACmI,OAAF,CAAU,KAAV,EAAiBrI,KAAlC;EACD,GA9JW;EA+JZ;EACAqR,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWnR,CAAX,EAAc;EACf,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GAlKW;EAmKZsN,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYpR,CAAZ,EAAe;EACjB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GArKW;EAsKZuN,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarR,CAAb,EAAgB;EACnB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GAxKW;EAyKZwN,EAAAA,IAAI,EAAE,SAASA,IAAT,CAActR,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACsE,QAAF,GAAaR,IAApB;EACD,GA3KW;EA4KZyN,EAAAA,CAAC,EAAE,SAASA,CAAT,CAAWvR,CAAX,EAAc;EACf,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GA9KW;EA+KZoR,EAAAA,EAAE,EAAE,SAASA,EAAT,CAAYxR,CAAZ,EAAe;EACjB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GAjLW;EAkLZqR,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAazR,CAAb,EAAgB;EACnB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,CAArB;EACD,GApLW;EAqLZsR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1R,CAAd,EAAiB;EACrB,WAAOG,cAAc,CAACH,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAtB,EAA8B,GAA9B,CAArB;EACD;EAvLW,CAAd;;EA0LA,IAAIuR,QAAQ,GAAG,SAASA,QAAT,CAAkBC,KAAlB,EAAyBC,EAAzB,EAA6BtU,CAA7B,EAAgC;EAC7C,MAAIuG,IAAI,GAAG8N,KAAX;EACA,MAAIE,MAAM,GAAGD,EAAb;;EAEA,OAAK,IAAI3S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,CAApB,EAAuB2B,CAAC,IAAI,CAA5B,EAA+B;EAC7B0I,IAAAA,OAAO,CAAC9D,IAAD,CAAP,GAAgB8D,OAAO,CAACkK,MAAD,CAAvB;EACAhO,IAAAA,IAAI,IAAI8N,KAAR;EACAE,IAAAA,MAAM,IAAID,EAAV;EACD;EACF,CATD;;EAWAF,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;EACAA,QAAQ,CAAC,GAAD,EAAM,GAAN,EAAW,CAAX,CAAR;;EAEA,IAAII,OAAO,GAAG,SAASA,OAAT,CAAiB/R,CAAjB,EAAoB1B,GAApB,EAAyB;EACrC,MAAI0T,KAAK,GAAG1T,GAAG,CAAC0E,KAAJ,CAAU,EAAV,CAAZ,CADqC;;EAGrC,MAAIkF,GAAG,GAAG,CAAC8J,KAAK,CAAC,CAAD,CAAN,CAAV;EACA,MAAIC,OAAO,GAAG,KAAd;;EAEA,OAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8S,KAAK,CAACvT,MAA1B,EAAkCS,CAAC,IAAI,CAAvC,EAA0C;EACxC;EACA,QAAI8S,KAAK,CAAC9S,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpB+S,MAAAA,OAAO,GAAG,CAACA,OAAX,CADoB;;EAGpB,UAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAAC9S,CAAC,GAAG,CAAL,CAAzB,IAAoC8S,KAAK,CAAC9S,CAAC,GAAG,CAAL,CAAL,KAAiB,GAAzD,EAA8D;EAC5D+S,QAAAA,OAAO,GAAG,IAAV;EACD,OAFD,MAEO;EACL;EACD;EACF,KAVuC;;;EAaxC,QAAIA,OAAO,KAAK,IAAZ,IAAoBD,KAAK,CAAC9S,CAAD,CAAL,KAAagJ,GAAG,CAACA,GAAG,CAACzJ,MAAJ,GAAa,CAAd,CAAH,CAAoB,CAApB,CAArC,EAA6D;EAC3DyJ,MAAAA,GAAG,CAACA,GAAG,CAACzJ,MAAJ,GAAa,CAAd,CAAH,IAAuBuT,KAAK,CAAC9S,CAAD,CAA5B;EACD,KAFD,MAEO;EACLgJ,MAAAA,GAAG,CAACgK,IAAJ,CAASF,KAAK,CAAC9S,CAAD,CAAd;EACD;EACF;;EAED,SAAOgJ,GAAG,CAAC/C,MAAJ,CAAW,UAAUgN,GAAV,EAAeC,CAAf,EAAkB;EAClC,QAAIxK,OAAO,CAACwK,CAAD,CAAP,KAAe1T,SAAnB,EAA8B;EAC5ByT,MAAAA,GAAG,IAAIvK,OAAO,CAACwK,CAAD,CAAP,CAAWpS,CAAX,KAAiB,EAAxB;EACD,KAFD,MAEO;EACLmS,MAAAA,GAAG,IAAIC,CAAP;EACD;;EAED,WAAOD,GAAP;EACD,GARM,EAQJ,EARI,CAAP;EASD,CAnCD;;EAqCA,IAAIE,SAAS,GAAGN,OAAhB;EAEA,IAAIO,OAAO,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,SAAnB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,aAAtD,EAAqE,MAArE,EAA6E,QAA7E,CAAd;;EAEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBvS,CAAhB,EAAmBZ,CAAnB,EAAsB;EACjC,MAAIwC,KAAK,GAAG5B,CAAC,CAACC,KAAF,GAAUkI,OAAV,CAAkB/I,CAAlB,CAAZ;EACA,MAAIyC,GAAG,GAAG7B,CAAC,CAACC,KAAF,GAAUuS,KAAV,CAAgBpT,CAAhB,CAAV;EACA,MAAI3E,QAAQ,GAAGoH,GAAG,CAAC/B,KAAJ,GAAY8B,KAAK,CAAC9B,KAAjC;EACA,MAAI2S,OAAO,GAAG,CAACzS,CAAC,CAACF,KAAF,GAAU8B,KAAK,CAAC9B,KAAjB,IAA0BrF,QAAxC;EACA,SAAOsN,UAAU,CAAC0K,OAAO,CAACC,OAAR,CAAgB,CAAhB,CAAD,CAAjB;EACD,CAND;;;EASA,IAAIC,QAAQ,GAAG,SAASA,QAAT,CAAkB3S,CAAlB,EAAqBqG,IAArB,EAA2B;EACxC,MAAIA,IAAJ,EAAU;EACRA,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;EACA,WAAOkM,MAAM,CAACvS,CAAD,EAAIqG,IAAJ,CAAb;EACD;;EAED,MAAI7D,GAAG,GAAG,EAAV;EACA8P,EAAAA,OAAO,CAAC9V,OAAR,CAAgB,UAAU4C,CAAV,EAAa;EAC3BoD,IAAAA,GAAG,CAACpD,CAAD,CAAH,GAASmT,MAAM,CAACvS,CAAD,EAAIZ,CAAJ,CAAf;EACD,GAFD;EAGA,SAAOoD,GAAP;EACD,CAXD;;EAaA,IAAIoQ,UAAU,GAAGD,QAAjB;;EAEA,IAAIE,OAAO,GAAG,SAASA,OAAT,CAAiB7S,CAAjB,EAAoBqG,IAApB,EAA0B;EACtC;EACA,MAAIyM,IAAI,GAAG9S,CAAC,CAAC2S,QAAF,EAAX;EACAtM,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CAHsC;;EAKtC,MAAIA,IAAI,KAAK,aAAb,EAA4B;EAC1BA,IAAAA,IAAI,GAAG,aAAP;EACD;;EAED,MAAIyM,IAAI,CAACzM,IAAD,CAAJ,KAAe3H,SAAnB,EAA8B;EAC5B;EACA,QAAIoU,IAAI,CAACzM,IAAD,CAAJ,GAAa,GAAjB,EAAsB;EACpBrG,MAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACD,KAJ2B;;;EAO5BrG,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAJ;EACD,GARD,MAQO,IAAIrG,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EAC7BxE,IAAAA,OAAO,CAACC,IAAR,CAAa,oBAAoB0D,IAApB,GAA2B,GAAxC;EACD;;EAED,SAAOrG,CAAP;EACD,CAtBD;;EAwBA,IAAI+S,SAAS,GAAGF,OAAhB;;EAGA,IAAIG,KAAK,GAAG,SAASA,KAAT,CAAezC,CAAf,EAAkB0C,CAAlB,EAAqB5M,IAArB,EAA2B;EACrC,MAAInH,CAAC,GAAG,CAAR;EACAqR,EAAAA,CAAC,GAAGA,CAAC,CAACtQ,KAAF,EAAJ;;EAEA,SAAOsQ,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAP,EAAsB;EACpB;EACA1C,IAAAA,CAAC,GAAGA,CAAC,CAAC3G,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACAnH,IAAAA,CAAC,IAAI,CAAL;EACD,GARoC;;;EAWrC,MAAIqR,CAAC,CAAC4C,OAAF,CAAUF,CAAV,EAAa5M,IAAb,CAAJ,EAAwB;EACtBnH,IAAAA,CAAC,IAAI,CAAL;EACD;;EAED,SAAOA,CAAP;EACD,CAhBD;EAiBA;;;EAGA,IAAIkU,OAAO,GAAG,SAASA,OAAT,CAAiB7C,CAAjB,EAAoB0C,CAApB,EAAuB5M,IAAvB,EAA6B;EACzC,MAAIkK,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAJ,EAAmB;EACjB,WAAOD,KAAK,CAACzC,CAAD,EAAI0C,CAAJ,EAAO5M,IAAP,CAAZ;EACD,GAFD,MAEO;EACL,WAAO2M,KAAK,CAACC,CAAD,EAAI1C,CAAJ,EAAOlK,IAAP,CAAL,GAAoB,CAAC,CAA5B,CADK;EAEN;EACF,CAND;;EAQA,IAAIgN,GAAG,GAAGD,OAAV;EAGA;;EAEA,IAAIE,QAAQ,GAAG,SAASA,QAAT,CAAkB/C,CAAlB,EAAqB0C,CAArB,EAAwB;EACrC,MAAIM,KAAK,GAAGN,CAAC,CAACvV,IAAF,KAAW6S,CAAC,CAAC7S,IAAF,EAAvB,CADqC;;EAGrC6S,EAAAA,CAAC,GAAGA,CAAC,CAAC7S,IAAF,CAAOuV,CAAC,CAACvV,IAAF,EAAP,CAAJ;;EAEA,MAAI6S,CAAC,CAAC4C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChBM,IAAAA,KAAK,IAAI,CAAT;EACD;;EAED,SAAOA,KAAP;EACD,CAVD;EAWA;EACA;;;EAGA,IAAI9M,IAAI,GAAG,SAASA,IAAT,CAAc8J,CAAd,EAAiB0C,CAAjB,EAAoB;EAC7B;EACA;EACA,MAAIO,MAAM,GAAGP,CAAC,CAACnT,KAAF,GAAUyQ,CAAC,CAACzQ,KAAzB;EACA,MAAI0C,GAAG,GAAG;EACR2D,IAAAA,YAAY,EAAEqN,MADN;EAERzM,IAAAA,OAAO,EAAEhN,QAAQ,CAACyZ,MAAM,GAAG,IAAV,EAAgB,EAAhB;EAFT,GAAV;EAIAhR,EAAAA,GAAG,CAACiR,OAAJ,GAAc1Z,QAAQ,CAACyI,GAAG,CAACuE,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAAtB;EACAvE,EAAAA,GAAG,CAACkR,KAAJ,GAAY3Z,QAAQ,CAACyI,GAAG,CAACiR,OAAJ,GAAc,EAAf,EAAmB,EAAnB,CAApB,CAT6B;;EAW7B,MAAI7T,GAAG,GAAG2Q,CAAC,CAACtQ,KAAF,EAAV;EACAuC,EAAAA,GAAG,CAAC+Q,KAAJ,GAAYD,QAAQ,CAAC1T,GAAD,EAAMqT,CAAN,CAApB;EACArT,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAAC+Q,KAAV,EAAiB,MAAjB,CAAN,CAb6B;;EAe7B/Q,EAAAA,GAAG,CAACiF,MAAJ,GAAajF,GAAG,CAAC+Q,KAAJ,GAAY,EAAzB;EACA3T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACiF,MAAV,EAAkB,OAAlB,CAAN;EACAjF,EAAAA,GAAG,CAACiF,MAAJ,IAAc4L,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,OAAT,CAAjB,CAjB6B;EAkB7B;;EAEAzQ,EAAAA,GAAG,CAACmR,KAAJ,GAAYnR,GAAG,CAAC+Q,KAAJ,GAAY,EAAxB;EACA3T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACmR,KAAV,EAAiB,MAAjB,CAAN;EACAnR,EAAAA,GAAG,CAACmR,KAAJ,IAAaN,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,MAAT,CAAhB,CAtB6B;;EAwB7BzQ,EAAAA,GAAG,CAACsI,IAAJ,GAAWtI,GAAG,CAACmR,KAAJ,GAAY,CAAvB;EACA/T,EAAAA,GAAG,GAAG2Q,CAAC,CAAC3G,GAAF,CAAMpH,GAAG,CAACsI,IAAV,EAAgB,KAAhB,CAAN;EACAtI,EAAAA,GAAG,CAACsI,IAAJ,IAAYuI,GAAG,CAACzT,GAAD,EAAMqT,CAAN,EAAS,KAAT,CAAf;EACA,SAAOzQ,GAAP;EACD,CA5BD;;EA8BA,IAAIoR,SAAS,GAAGnN,IAAhB;;EAEA,IAAIoN,WAAW,GAAG,SAASA,WAAT,CAAqBrR,GAArB,EAA0B;EAC1C5E,EAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAU4C,CAAV,EAAa;EACpCoD,IAAAA,GAAG,CAACpD,CAAD,CAAH,IAAU,CAAC,CAAX;EACD,GAFD;EAGA,SAAOoD,GAAP;EACD,CALD;EAMA;EACA;;;EAGA,IAAIsR,IAAI,GAAG,SAASA,IAAT,CAAcvD,CAAd,EAAiB0C,CAAjB,EAAoB5M,IAApB,EAA0B;EACnC4M,EAAAA,CAAC,GAAGzV,GAAG,CAACuC,OAAJ,CAAYkT,CAAZ,EAAe1C,CAAf,CAAJ,CADmC;;EAGnC,MAAIwD,QAAQ,GAAG,KAAf;;EAEA,MAAIxD,CAAC,CAAC4C,OAAF,CAAUF,CAAV,CAAJ,EAAkB;EAChB,QAAIrT,GAAG,GAAG2Q,CAAV;EACAA,IAAAA,CAAC,GAAG0C,CAAJ;EACAA,IAAAA,CAAC,GAAGrT,GAAJ;EACAmU,IAAAA,QAAQ,GAAG,IAAX;EACD,GAVkC;;;EAanC,MAAIvR,GAAG,GAAGoR,SAAS,CAACrD,CAAD,EAAI0C,CAAJ,CAAnB;;EAEA,MAAIc,QAAJ,EAAc;EACZvR,IAAAA,GAAG,GAAGqR,WAAW,CAACrR,GAAD,CAAjB;EACD,GAjBkC;;;EAoBnC,MAAI6D,IAAJ,EAAU;EACR;EACAA,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,QAAI,KAAKb,IAAL,CAAUa,IAAV,MAAoB,IAAxB,EAA8B;EAC5BA,MAAAA,IAAI,IAAI,GAAR;EACD;;EAED,QAAIA,IAAI,KAAK,OAAb,EAAsB;EACpBA,MAAAA,IAAI,GAAG,MAAP;EACD;;EAED,WAAO7D,GAAG,CAAC6D,IAAD,CAAV;EACD;;EAED,SAAO7D,GAAP;EACD,CApCD;;EAsCA,IAAIwR,MAAM,GAAGF,IAAb;;EAIA,IAAIG,UAAU,GAAG;EACfxM,EAAAA,MAAM,EAAE;EACNyM,IAAAA,MAAM,EAAE,EADF;EAENC,IAAAA,IAAI,EAAE;EAFA,GADO;EAKfrJ,EAAAA,IAAI,EAAE;EACJoJ,IAAAA,MAAM,EAAE,EADJ;EAEJC,IAAAA,IAAI,EAAE;EAFF,GALS;EASfT,EAAAA,KAAK,EAAE;EACLQ,IAAAA,MAAM,EAAE,EADH;EAELC,IAAAA,IAAI,EAAE;EAFD,GATQ;EAafV,EAAAA,OAAO,EAAE;EACPS,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC,GAbM;EAiBfpN,EAAAA,OAAO,EAAE;EACPmN,IAAAA,MAAM,EAAE,EADD;EAEPC,IAAAA,IAAI,EAAE;EAFC;EAjBM,CAAjB;;EAuBA,SAASC,OAAT,CAAiB7D,CAAjB,EAAoB0C,CAApB,EAAuB;EACrB,MAAIC,QAAQ,GAAG3C,CAAC,CAAC2C,QAAF,CAAWD,CAAX,CAAf;EACA,MAAIoB,KAAK,GAAGnB,QAAQ,GAAGD,CAAH,GAAO1C,CAA3B;EACA,MAAI+D,OAAO,GAAGpB,QAAQ,GAAG3C,CAAH,GAAO0C,CAA7B;EACAqB,EAAAA,OAAO,GAAGA,OAAO,CAACrU,KAAR,EAAV;EACA,MAAIwG,IAAI,GAAG;EACT8M,IAAAA,KAAK,EAAE,CADE;EAET9L,IAAAA,MAAM,EAAE,CAFC;EAGTqD,IAAAA,IAAI,EAAE,CAHG;EAIT4I,IAAAA,KAAK,EAAE,CAJE;EAKTD,IAAAA,OAAO,EAAE,CALA;EAMT1M,IAAAA,OAAO,EAAE;EANA,GAAX;EAQAnJ,EAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAU6J,IAAV,EAAgB;EACxC,QAAIiO,OAAO,CAACC,MAAR,CAAeF,KAAf,EAAsBhO,IAAtB,CAAJ,EAAiC;EAC/B;EACD;;EAED,QAAIqC,GAAG,GAAG4L,OAAO,CAAC7N,IAAR,CAAa4N,KAAb,EAAoBhO,IAApB,CAAV;EACAiO,IAAAA,OAAO,GAAGA,OAAO,CAAC1K,GAAR,CAAYlB,GAAZ,EAAiBrC,IAAjB,CAAV;EACAI,IAAAA,IAAI,CAACJ,IAAD,CAAJ,GAAaqC,GAAb;EACD,GARD,EAbqB;;EAuBrB,MAAIwK,QAAJ,EAAc;EACZtV,IAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAUgY,CAAV,EAAa;EACrC,UAAI/N,IAAI,CAAC+N,CAAD,CAAJ,KAAY,CAAhB,EAAmB;EACjB/N,QAAAA,IAAI,CAAC+N,CAAD,CAAJ,IAAW,CAAC,CAAZ;EACD;EACF,KAJD;EAKD;;EAED,SAAO/N,IAAP;EACD;;;EAGD,SAASgO,SAAT,CAAmBC,KAAnB,EAA0BrO,IAA1B,EAAgC;EAC9B,MAAIqO,KAAK,KAAK,CAAd,EAAiB;EACfrO,IAAAA,IAAI,GAAGA,IAAI,CAACsO,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAP;EACD;;EAED,SAAOD,KAAK,GAAG,GAAR,GAAcrO,IAArB;EACD;;;EAGD,IAAIuO,KAAK,GAAG,SAASA,KAAT,CAAehT,KAAf,EAAsBC,GAAtB,EAA2B;EACrCA,EAAAA,GAAG,GAAGrE,GAAG,CAACuC,OAAJ,CAAY8B,GAAZ,EAAiBD,KAAjB,CAAN;EACA,MAAI6E,IAAI,GAAG2N,OAAO,CAACxS,KAAD,EAAQC,GAAR,CAAlB;EACA,MAAIgT,KAAK,GAAGjX,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBqO,KAAlB,CAAwB,UAAUN,CAAV,EAAa;EAC/C,WAAO,CAAC/N,IAAI,CAAC+N,CAAD,CAAZ;EACD,GAFW,CAAZ;;EAIA,MAAIK,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO;EACLpO,MAAAA,IAAI,EAAEA,IADD;EAELsO,MAAAA,OAAO,EAAE,KAFJ;EAGLC,MAAAA,SAAS,EAAE,KAHN;EAILC,MAAAA,OAAO,EAAE;EAJJ,KAAP;EAMD;;EAED,MAAIF,OAAJ;EACA,MAAIC,SAAJ;EACA,MAAIC,OAAJ;EACA,MAAIC,aAAa,GAAG,EAApB,CAnBqC;;EAqBrCtX,EAAAA,MAAM,CAAC8F,IAAP,CAAY+C,IAAZ,EAAkBjK,OAAlB,CAA0B,UAAU6J,IAAV,EAAgBnH,CAAhB,EAAmByH,KAAnB,EAA0B;EAClD,QAAI+N,KAAK,GAAGnU,IAAI,CAACC,GAAL,CAASiG,IAAI,CAACJ,IAAD,CAAb,CAAZ;;EAEA,QAAIqO,KAAK,KAAK,CAAd,EAAiB;EACf;EACD;;EAED,QAAIS,YAAY,GAAGV,SAAS,CAACC,KAAD,EAAQrO,IAAR,CAA5B;EACA6O,IAAAA,aAAa,CAAChD,IAAd,CAAmBiD,YAAnB;;EAEA,QAAI,CAACJ,OAAL,EAAc;EACZA,MAAAA,OAAO,GAAGC,SAAS,GAAGG,YAAtB;;EAEA,UAAIjW,CAAC,GAAG,CAAR,EAAW;EACT;EACD,OALW;;;EAQZ,UAAIkW,QAAQ,GAAGzO,KAAK,CAACzH,CAAC,GAAG,CAAL,CAApB;EACA,UAAImW,SAAS,GAAG9U,IAAI,CAACC,GAAL,CAASiG,IAAI,CAAC2O,QAAD,CAAb,CAAhB;;EAEA,UAAIC,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBlB,MAArC,EAA6C;EAC3Ca,QAAAA,OAAO,GAAGN,SAAS,CAACC,KAAK,GAAG,CAAT,EAAYrO,IAAZ,CAAnB;EACA2O,QAAAA,SAAS,GAAG,YAAYD,OAAxB;EACD,OAHD,MAGO,IAAIM,SAAS,GAAGpB,UAAU,CAACmB,QAAD,CAAV,CAAqBjB,IAArC,EAA2Ca,SAAS,GAAG,UAAUG,YAAtB;EACnD;EACF,GA1BD,EArBqC;;EAiDrCF,EAAAA,OAAO,GAAGC,aAAa,CAACI,MAAd,CAAqB,CAArB,EAAwB,CAAxB,EAA2BzW,IAA3B,CAAgC,IAAhC,CAAV,CAjDqC;;EAmDrC,MAAI+C,KAAK,CAACuR,OAAN,CAActR,GAAd,MAAuB,IAA3B,EAAiC;EAC/BkT,IAAAA,OAAO,IAAI,MAAX;EACAC,IAAAA,SAAS,IAAI,MAAb;EACAC,IAAAA,OAAO,IAAI,MAAX;EACD,GAJD,MAIO;EACLF,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACAC,IAAAA,SAAS,GAAG,QAAQA,SAApB;EACAC,IAAAA,OAAO,GAAG,QAAQA,OAAlB;EACD;;EAED,SAAO;EACLxO,IAAAA,IAAI,EAAEA,IADD;EAELsO,IAAAA,OAAO,EAAEA,OAFJ;EAGLC,IAAAA,SAAS,EAAEA,SAHN;EAILC,IAAAA,OAAO,EAAEA;EAJJ,GAAP;EAMD,CAnED;;EAqEA,IAAIM,OAAO,GAAGX,KAAd;EAGA;EACA;EACA;EACA;;EACA,IAAIrb,SAAO,GAAG;EACZic,EAAAA,KAAK,EAAE,CAAC,CAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA,GADK;EAOZC,EAAAA,KAAK,EAAE,CAAC,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,CAAD;EACP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CADO;EAEP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAFO;EAGP,GAAC,QAAD,EAAW,CAAX,EAAc,CAAd,CAHO;EAIP,GAAC,QAAD,EAAW,EAAX,EAAe,CAAf,CAJO;EAAA;EAPK,CAAd;EAeA,IAAIC,QAAQ,GAAG,CAAC,IAAD,EAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EACf,CAAC,CAAD,EAAI,CAAJ,CADe;EAEf,CAAC,CAAD,EAAI,CAAJ,CAFe;EAGf,CAAC,CAAD,EAAI,CAAJ,CAHe;EAAA,CAAf;EAMA,IAAIC,OAAO,GAAG;EACZ5P,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR8F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAO7F,CAAP;EACD,GAPW;EAQZ4V,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB5V,CAArB,EAAwB;EACnC,QAAI+F,MAAM,GAAG/F,CAAC,CAACyT,OAAF,EAAb;;EAEA,QAAI1N,MAAM,IAAI,EAAd,EAAkB;EAChB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFD,MAEO,IAAI1N,MAAM,IAAI,EAAd,EAAkB;EACvB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA,IAAI1N,MAAM,IAAI,EAAd,EAAkB;EACvB/F,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,EAAV,CAAJ;EACD,KAFM,MAEA;EACLzT,MAAAA,CAAC,GAAGA,CAAC,CAACyT,OAAF,CAAU,CAAV,CAAJ;EACD;;EAEDtM,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR8F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,WAAW,EAAE;EAFL,KAAJ,CAAN;EAIA,WAAO7F,CAAP;EACD,GA1BW;EA2BZgG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR+F,MAAAA,MAAM,EAAE,CADA;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,WAAW,EAAE;EAHL,KAAJ,CAAN;EAKA,WAAO7F,CAAP;EACD,GAlCW;EAmCZiG,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAE,CADE;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAO7F,CAAP;EACD,GA3CW;EA4CZkG,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclG,CAAd,EAAiB;EACrB,QAAIwG,QAAQ,GAAGxG,CAAC,CAACC,KAAF,EAAf;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAMjG,CAAC,CAAC6V,UAAR,CAAJ,CAFqB;;EAIrB,QAAI7V,CAAC,CAACmT,OAAF,CAAU3M,QAAV,CAAJ,EAAyB;EACvBxG,MAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,MAAd,CAAJ;EACD;;EAED3C,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAE,CADE;EAERD,MAAAA,MAAM,EAAE,CAFA;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,WAAW,EAAE;EAJL,KAAJ,CAAN;EAMA,WAAO7F,CAAP;EACD,GA3DW;EA4DZ1F,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRpF,MAAAA,IAAI,EAAE,CADE;EAERoL,MAAAA,IAAI,EAAE,CAFE;EAGRD,MAAAA,MAAM,EAAE,CAHA;EAIRD,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,WAAW,EAAE;EALL,KAAJ,CAAN;EAOA,WAAO7F,CAAP;EACD,GArEW;EAsEZ0M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,QAAI8V,CAAC,GAAG9V,CAAC,CAAC0M,OAAF,EAAR;;EAEA,QAAIgJ,QAAQ,CAACI,CAAD,CAAZ,EAAiB;EACf3O,MAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,QAAAA,KAAK,EAAEob,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CADC;EAERlb,QAAAA,IAAI,EAAE8a,QAAQ,CAACI,CAAD,CAAR,CAAY,CAAZ,CAFE;EAGR9P,QAAAA,IAAI,EAAE,CAHE;EAIRD,QAAAA,MAAM,EAAE,CAJA;EAKRD,QAAAA,MAAM,EAAE,CALA;EAMRD,QAAAA,WAAW,EAAE;EANL,OAAJ,CAAN;EAQD;;EAED,WAAO7F,CAAP;EACD,GArFW;EAsFZrF,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBqF,CAAhB,EAAmB;EACzB,QAAImC,OAAO,GAAGnC,CAAC,CAACrF,MAAF,EAAd;EACA,QAAIoI,GAAG,GAAG,OAAV;;EAEA,QAAI/C,CAAC,CAAC+V,UAAF,OAAmB,OAAvB,EAAgC;EAC9BhT,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,SAAK,IAAI7D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3F,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;EAC5C,UAAI3F,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,MAAuBiD,OAA3B,EAAoC;EAClC;EACA,YAAIzE,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;;EAEA,YAAIyE,OAAO,KAAK,QAAZ,IAAwBnC,CAAC,CAAC1F,KAAF,KAAY,CAAxC,EAA2C;EACzCoD,UAAAA,IAAI,IAAI,CAAR;EACD;;EAEDyJ,QAAAA,MAAM,CAACnH,CAAD,EAAI;EACRtC,UAAAA,IAAI,EAAEA,IADE;EAERpD,UAAAA,KAAK,EAAEf,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAFC;EAGRtE,UAAAA,IAAI,EAAErB,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAHE;EAIR8G,UAAAA,IAAI,EAAE,CAJE;EAKRD,UAAAA,MAAM,EAAE,CALA;EAMRD,UAAAA,MAAM,EAAE,CANA;EAORD,UAAAA,WAAW,EAAE;EAPL,SAAJ,CAAN;EASA,eAAO7F,CAAP;EACD;EACF;;EAED,WAAOA,CAAP;EACD,GArHW;EAsHZtC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrBmH,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,MAAAA,KAAK,EAAE,CADC;EAERM,MAAAA,IAAI,EAAE,CAFE;EAGRoL,MAAAA,IAAI,EAAE,CAHE;EAIRD,MAAAA,MAAM,EAAE,CAJA;EAKRD,MAAAA,MAAM,EAAE,CALA;EAMRD,MAAAA,WAAW,EAAE;EANL,KAAJ,CAAN;EAQA,WAAO7F,CAAP;EACD,GAhIW;EAiIZgW,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhW,CAAhB,EAAmB;EACzBA,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIzK,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX;EACA,QAAIsY,MAAM,GAAGjc,QAAQ,CAAC2D,IAAI,GAAG,EAAR,EAAY,EAAZ,CAAR,GAA0B,EAAvC;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACtC,IAAF,CAAOsY,MAAP,CAAJ;EACA,WAAOhW,CAAP;EACD,GAvIW;EAwIZiW,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjW,CAAjB,EAAoB;EAC3BA,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACA,QAAIzK,IAAI,GAAGsC,CAAC,CAACtC,IAAF,EAAX,CAF2B;;EAI3B,QAAIsY,MAAM,GAAGjc,QAAQ,CAAC2D,IAAI,GAAG,GAAR,EAAa,EAAb,CAAR,GAA2B,GAAxC;EACAsC,IAAAA,CAAC,GAAGA,CAAC,CAACtC,IAAF,CAAOsY,MAAP,CAAJ;EACA,WAAOhW,CAAP;EACD;EA/IW,CAAd;EAiJA2V,OAAO,CAAC/a,IAAR,GAAe+a,OAAO,CAAC1P,GAAvB;;EAEA,IAAIkC,OAAO,GAAG,SAASA,OAAT,CAAiBoI,CAAjB,EAAoBlK,IAApB,EAA0B;EACtC,MAAIrG,CAAC,GAAGuQ,CAAC,CAACtQ,KAAF,EAAR;EACAoG,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,MAAIsP,OAAO,CAACtP,IAAD,CAAX,EAAmB;EACjB,WAAOsP,OAAO,CAACtP,IAAD,CAAP,CAAcrG,CAAd,CAAP;EACD;;EAED,MAAIqG,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAAlC,EAA4C;EAC1CrG,IAAAA,CAAC,GAAGA,CAAC,CAACrF,MAAF,CAAS0L,IAAT,CAAJ;EACA,WAAOsP,OAAO,CAAChb,MAAR,CAAeqF,CAAf,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAdD;;;EAiBA,IAAIwS,KAAK,GAAG,SAASA,KAAT,CAAejC,CAAf,EAAkBlK,IAAlB,EAAwB;EAClC,MAAIrG,CAAC,GAAGuQ,CAAC,CAACtQ,KAAF,EAAR;EACAoG,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP;;EAEA,MAAIsP,OAAO,CAACtP,IAAD,CAAX,EAAmB;EACjBrG,IAAAA,CAAC,GAAG2V,OAAO,CAACtP,IAAD,CAAP,CAAcrG,CAAd,CAAJ;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACArG,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,cAAd,CAAJ;EACA,WAAO9J,CAAP;EACD;;EAED,SAAOA,CAAP;EACD,CAZD;;EAcA,IAAIkW,SAAS,GAAG;EACd/N,EAAAA,OAAO,EAAEA,OADK;EAEdqK,EAAAA,KAAK,EAAEA;EAFO,CAAhB;;EAKA,IAAI2D,KAAK,GAAG,SAASA,KAAT,CAAe9P,IAAf,EAAqB;EAC/B,MAAIyE,IAAI,CAAC,OAAD,CAAJ,GAAgBnF,IAAhB,CAAqB,UAAU3F,CAAV,EAAa;EACpC,WAAOA,CAAC,KAAKqG,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,MAAIyE,IAAI,CAAC,MAAD,CAAJ,GAAenF,IAAf,CAAoB,UAAU3F,CAAV,EAAa;EACnC,WAAOA,CAAC,KAAKqG,IAAb;EACD,GAFG,CAAJ,EAEI;EACF,WAAO,IAAP;EACD;;EAED,SAAO,KAAP;EACD,CAdD;EAeA;;;EAGA,IAAIyO,KAAK,GAAG,SAASA,KAAT,CAAelT,KAAf,EAAsB;EAChC,MAAIyE,IAAI,GAAG7H,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAA/E;EACA,MAAIqD,GAAG,GAAGrD,SAAS,CAACC,MAAV,GAAmB,CAAnB,GAAuBD,SAAS,CAAC,CAAD,CAAhC,GAAsCE,SAAhD;;EAEA,MAAI,CAAC2H,IAAD,IAAS,CAACxE,GAAd,EAAmB;EACjB,WAAO,EAAP;EACD,GAN+B;;;EAShCwE,EAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CATgC;;EAWhCxE,EAAAA,GAAG,GAAGD,KAAK,CAAC3B,KAAN,GAAcC,GAAd,CAAkB2B,GAAlB,CAAN,CAXgC;;EAahC,MAAID,KAAK,CAACuR,OAAN,CAActR,GAAd,CAAJ,EAAwB;EACtB,QAAIjC,GAAG,GAAGgC,KAAV;EACAA,IAAAA,KAAK,GAAGC,GAAR;EACAA,IAAAA,GAAG,GAAGjC,GAAN;EACD,GAjB+B;;;EAoBhC,MAAIjE,CAAC,GAAGiG,KAAK,CAAC3B,KAAN,EAAR;;EAEA,MAAIkW,KAAK,CAAC9P,IAAD,CAAT,EAAiB;EACf1K,IAAAA,CAAC,GAAGA,CAAC,CAACya,IAAF,CAAO/P,IAAP,CAAJ;EACAA,IAAAA,IAAI,GAAG,MAAP;EACD,GAHD,MAGO;EACL1K,IAAAA,CAAC,GAAGA,CAAC,CAACya,IAAF,CAAO/P,IAAP,CAAJ;EACD,GA3B+B;;;EA8BhC,MAAIgQ,MAAM,GAAG,EAAb;;EAEA,SAAO1a,CAAC,CAACuX,QAAF,CAAWrR,GAAX,CAAP,EAAwB;EACtBwU,IAAAA,MAAM,CAACnE,IAAP,CAAYvW,CAAZ;EACAA,IAAAA,CAAC,GAAGA,CAAC,CAACiO,GAAF,CAAM,CAAN,EAASvD,IAAT,CAAJ;EACD;;EAED,SAAOgQ,MAAP;EACD,CAtCD;;EAwCA,IAAIC,OAAO,GAAGxB,KAAd;;EAEA,IAAIyB,QAAQ,GAAG,SAASA,QAAT,CAAkB3T,GAAlB,EAAuB;EACpC,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,EAAP;EACD;;EAED,SAAOA,GAAG,CAACI,KAAJ,CAAU,IAAV,CAAP;EACD,CAND;;EAQA,IAAIlE,SAAS,GAAG,SAASA,SAAT,CAAmBR,GAAnB,EAAwB;EACtCA,EAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,CAAOS,WAAP,KAAuBT,GAAG,CAACU,MAAJ,CAAW,CAAX,CAA7B;EACAV,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,OAAZ,EAAqB,MAArB,CAAN;EACAjB,EAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,CAAY,gBAAZ,EAA8B,UAAUS,CAAV,EAAa;EAC/C,WAAOA,CAAC,CAACjB,WAAF,EAAP;EACD,GAFK,CAAN;EAGA,SAAOT,GAAP;EACD,CAPD;;;EAUA,IAAIgG,QAAQ,GAAG,SAASA,QAAT,CAAkBtE,CAAlB,EAAqB;EAClC,MAAIsC,KAAK,GAAGtC,CAAC,CAACuC,SAAd;EACA,MAAIE,EAAE,GAAGzC,CAAC,CAACyC,EAAX;;EAEA,MAAIH,KAAK,CAACiD,cAAN,CAAqB9C,EAArB,MAA6B,KAAjC,EAAwC;EACtCA,IAAAA,EAAE,GAAGkD,IAAI,CAAC3F,CAAC,CAACyC,EAAH,EAAOH,KAAP,CAAT;EACD;;EAED,MAAIG,EAAE,KAAK,IAAX,EAAiB;EACf,QAAIzC,CAAC,CAACkH,MAAF,KAAa,KAAjB,EAAwB;EACtBxE,MAAAA,OAAO,CAACC,IAAR,CAAa,qDAAqD3C,CAAC,CAACyC,EAAvD,GAA4D,GAAzE;EACD;;EAED,WAAO;EACLN,MAAAA,OAAO,EAAE;EACPqU,QAAAA,UAAU,EAAE;EADL;EADJ,KAAP;EAKD;;EAED,MAAI7c,KAAK,GAAG2I,KAAK,CAACG,EAAD,CAAjB;EACA,MAAI4T,MAAM,GAAG;EACXvS,IAAAA,IAAI,EAAEhF,SAAS,CAAC2D,EAAD,CADJ;EAEXgU,IAAAA,MAAM,EAAEC,OAAO,CAAC/c,KAAK,CAACiJ,GAAP,CAFJ;EAGX+T,IAAAA,cAAc,EAAEhd,KAAK,CAACyG,MAHX;EAIX;EACA2V,IAAAA,UAAU,EAAEpc,KAAK,CAACoJ,GAAN,KAAc,GAAd,GAAoB,OAApB,GAA8B,OAL/B;EAMXZ,IAAAA,OAAO,EAAE;EANE,GAAb;;EASA,MAAIkU,MAAM,CAACI,MAAX,EAAmB;EACjB,QAAIvO,GAAG,GAAGqO,QAAQ,CAAC5c,KAAK,CAACiJ,GAAP,CAAlB;EACAyT,IAAAA,MAAM,CAACO,MAAP,GAAgB;EACdhV,MAAAA,KAAK,EAAEsG,GAAG,CAAC,CAAD,CADI;EAEd2O,MAAAA,IAAI,EAAE3O,GAAG,CAAC,CAAD;EAFK,KAAhB;EAID,GApCiC;EAqClC;;;EAGA,MAAI4O,MAAM,GAAGnd,KAAK,CAACyG,MAAnB,CAxCkC;;EA0ClC,MAAI2W,MAAM,GAAGD,MAAb,CA1CkC;;EA4ClC,MAAIT,MAAM,CAACI,MAAP,KAAkB,IAAtB,EAA4B;EAC1B,QAAIJ,MAAM,CAACN,UAAP,KAAsB,OAA1B,EAAmC;EACjCgB,MAAAA,MAAM,GAAGD,MAAM,GAAG,CAAlB;EACD,KAFD,MAEO;EACL;EACAC,MAAAA,MAAM,GAAGpd,KAAK,CAACyG,MAAN,GAAe,CAAxB;EACD;EACF,GAnDiC;EAoDlC;;;EAGA,MAAIiW,MAAM,CAACI,MAAP,KAAkB,KAAtB,EAA6B;EAC3BJ,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB0W,MAAxB;EACAT,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuB,KAAvB;EACD,GAHD,MAGO,IAAI5U,UAAU,CAACpC,CAAC,CAACF,KAAH,EAAUuW,MAAM,CAACO,MAAP,CAAchV,KAAxB,EAA+ByU,MAAM,CAACO,MAAP,CAAcC,IAA7C,EAAmDC,MAAnD,CAAV,KAAyE,IAA7E,EAAmF;EACxFT,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB0W,MAAxB;EACAT,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuBX,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAFwF;EAGzF,GAHM,MAGA;EACL;EACAM,IAAAA,MAAM,CAAClU,OAAP,CAAe/B,MAAf,GAAwB2W,MAAxB;EACAV,IAAAA,MAAM,CAAClU,OAAP,CAAe6U,KAAf,GAAuBX,MAAM,CAACN,UAAP,KAAsB,OAA7C,CAHK;EAIN;;EAED,SAAOM,MAAP;EACD,CApED;;EAsEA,IAAIY,UAAU,GAAG3S,QAAjB;EAEA,IAAI4S,OAAO,GAAG,CAAC,SAAD,EAAY,QAAZ,EAAsB,MAAtB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C,KAA/C,EAAsD,MAAtD,EAA8D,QAA9D,EAAwE,QAAxE,EAAkF,aAAlF,CAAd;;EAEA,IAAInb,SAAO,GAAG;EACZmE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaiX,OAAb,EAAsB1U,EAAtB,EAA0B;EAC7B,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAG7B,KAAK,CAAC6B,CAAD,EAAImX,OAAJ,EAAa,IAAb,CAAT;;EAEA,QAAI1U,EAAJ,EAAQ;EACN,WAAKA,EAAL,GAAUkD,IAAI,CAAClD,EAAD,CAAd;EACD;;EAED,WAAOzC,CAAP;EACD,GAVW;EAWZsE,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO2S,UAAU,CAAC,IAAD,CAAjB;EACD,GAbW;EAcZD,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,WAAOC,UAAU,CAAC,IAAD,CAAV,CAAiB9U,OAAjB,CAAyB6U,KAAhC;EACD,GAhBW;EAiBZI,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAOH,UAAU,CAAC,IAAD,CAAV,CAAiBR,MAAxB;EACD,GAnBW;EAoBZrW,EAAAA,MAAM,EAAE,SAASA,MAAT,GAAkB;EACxB,WAAO6W,UAAU,CAAC,IAAD,CAAV,CAAiB9U,OAAjB,CAAyB/B,MAAzB,GAAkC,EAAzC;EACD,GAtBW;EAuBZ2V,EAAAA,UAAU,EAAE,SAASA,UAAT,GAAsB;EAChC,WAAOkB,UAAU,CAAC,IAAD,CAAV,CAAiBlB,UAAxB;EACD,GAzBW;EA0BZ3R,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB+J,GAAhB,EAAqB;EAC3B,WAAOC,QAAQ,CAAC,IAAD,EAAOD,GAAP,CAAf;EACD,GA5BW;EA6BZ4D,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5D,GAAjB,EAAsB;EAC7B,WAAOkE,SAAS,CAAC,IAAD,EAAOlE,GAAP,CAAhB;EACD,GA/BW;EAgCZhG,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB9B,IAAjB,EAAuB;EAC9B,WAAO6P,SAAS,CAAC/N,OAAV,CAAkB,IAAlB,EAAwB9B,IAAxB,CAAP;EACD,GAlCW;EAmCZmM,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAenM,IAAf,EAAqB;EAC1B,WAAO6P,SAAS,CAAC1D,KAAV,CAAgB,IAAhB,EAAsBnM,IAAtB,CAAP;EACD,GArCW;EAsCZgR,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,QAAI3Z,IAAI,GAAG,KAAKA,IAAL,EAAX;EACA,WAAOF,GAAG,CAACC,UAAJ,CAAeC,IAAf,CAAP;EACD,GAzCW;EA0CZiV,EAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBtM,IAAlB,EAAwB;EAChC,WAAOuM,UAAU,CAAC,IAAD,EAAOvM,IAAP,CAAjB;EACD,GA5CW;EA6CZwM,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxM,IAAjB,EAAuB;EAC9B,WAAO0M,SAAS,CAAC,IAAD,EAAO1M,IAAP,CAAhB;EACD,GA/CW;EAgDZI,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc9K,CAAd,EAAiB0K,IAAjB,EAAuB;EAC3B,WAAO2N,MAAM,CAAC,IAAD,EAAOrY,CAAP,EAAU0K,IAAV,CAAb;EACD,GAlDW;EAmDZuO,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAejZ,CAAf,EAAkB;EACvB,QAAI,CAACA,CAAL,EAAQ;EACNA,MAAAA,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,EAAJ;EACD;;EAED,WAAOqV,OAAO,CAAC,IAAD,EAAO5Z,CAAP,CAAd;EACD,GAzDW;EA0DZya,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc/P,IAAd,EAAoB;EACxB,QAAIrG,CAAC,GAAG,KAAK4J,GAAL,CAAS,CAAT,EAAYvD,IAAZ,CAAR;EACA,WAAOrG,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAP;EACD,GA7DW;EA8DZ;EACAiR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjR,IAAd,EAAoB;EACxB,QAAIrG,CAAC,GAAG,KAAK8J,QAAL,CAAc,CAAd,EAAiBzD,IAAjB,CAAR;EACA,WAAOrG,CAAC,CAACmI,OAAF,CAAU9B,IAAV,CAAP;EACD,GAlEW;EAmEZqE,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B;EACA,QAAI,CAAC,KAAK5K,KAAN,IAAe,KAAKA,KAAL,KAAe,CAAlC,EAAqC;EACnC,aAAO,KAAP;EACD;;EAED,WAAO,CAAC9B,KAAK,CAAC,KAAKrC,CAAL,CAAOkE,OAAP,EAAD,CAAb;EACD,GA1EW;EA2EZ;EACA,UAAQ,SAAS0X,KAAT,CAAc9U,EAAd,EAAkB;EACxB,QAAIzC,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,CAACyC,EAAF,GAAOkD,IAAI,CAAClD,EAAD,EAAKzC,CAAC,CAACuC,SAAP,CAAX,CAFwB;;EAIxB,WAAOvC,CAAP;EACD,GAjFW;EAkFZ;EACA8U,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAezO,IAAf,EAAqBwL,EAArB,EAAyB;EAC9B,WAAOyE,OAAO,CAAC,IAAD,EAAOjQ,IAAP,EAAawL,EAAb,CAAd;EACD,GArFW;EAsFZ2F,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIxR,IAAI,GAAG,KAAKA,IAAL,EAAX,CAD0B;;EAG1B,QAAIA,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAvB,EAA2B;EACzB,aAAO,KAAP;EACD;;EAED,WAAO,IAAP;EACD,GA9FW;EA+FZyR,EAAAA,QAAQ,EAAE,SAASA,QAAT,GAAoB;EAC5B,WAAO,CAAC,KAAKD,OAAL,EAAR;EACD,GAjGW;EAkGZ;EACAE,EAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClBhV,IAAAA,OAAO,CAACgV,GAAR,CAAY,EAAZ;EACAhV,IAAAA,OAAO,CAACgV,GAAR,CAAYtJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GAvGW;EAwGZuJ,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1BjV,IAAAA,OAAO,CAACgV,GAAR,CAAY,EAAZ;EACAhV,IAAAA,OAAO,CAACgV,GAAR,CAAYtJ,QAAQ,CAAC,IAAD,EAAO,YAAP,CAApB;EACA,WAAO,IAAP;EACD,GA5GW;EA6GZxB,EAAAA,IAAI,EAAE,SAASA,IAAT,GAAgB;EACpB,QAAIgL,KAAK,GAAG,IAAZ;;EAEA,WAAOV,OAAO,CAAC/R,MAAR,CAAe,UAAUC,CAAV,EAAaiB,IAAb,EAAmB;EACvCjB,MAAAA,CAAC,CAACiB,IAAD,CAAD,GAAUuR,KAAK,CAACvR,IAAD,CAAL,EAAV;EACA,aAAOjB,CAAP;EACD,KAHM,EAGJ,EAHI,CAAP;EAID,GApHW;EAqHZyS,EAAAA,KAAK,EAAE,SAASA,KAAT,GAAiB;EACtB,QAAIpV,EAAE,GAAG,KAAK6B,QAAL,EAAT;EACA,QAAI1J,IAAI,GAAG,KAAKwJ,MAAL,CAAY,IAAZ,IAAoB,GAApB,GAA0B,KAAKA,MAAL,CAAY,cAAZ,CAA1B,GAAwD,GAAxD,GAA8D,KAAK1G,IAAL,EAAzE;EACA9C,IAAAA,IAAI,IAAI,cAAc,KAAKwJ,MAAL,CAAY,MAAZ,CAAtB;EACA1B,IAAAA,OAAO,CAACgV,GAAR,CAAY,MAAZ,EAAoB9c,IAAI,GAAG,WAAP,GAAqB6H,EAAE,CAACqB,IAAxB,GAA+B,IAA/B,GAAsCrB,EAAE,CAACN,OAAH,CAAW/B,MAAjD,GAA0D,GAA9E;EACA,WAAO,IAAP;EACD,GA3HW;EA4HZ;EACA0X,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcnc,CAAd,EAAiB;EACrBA,IAAAA,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,CAAiBvE,CAAjB,CAAJ;EACA,WAAOA,CAAC,CAACiZ,KAAF,CAAQ,IAAR,CAAP;EACD,GAhIW;EAiIZmD,EAAAA,OAAO,EAAE,SAASA,OAAT,GAAmB;EAC1B,QAAIpc,CAAC,GAAG,KAAKsE,KAAL,GAAaC,GAAb,CAAiB6B,IAAI,CAACyH,GAAL,EAAjB,CAAR;EACA,WAAO7N,CAAC,CAACiZ,KAAF,CAAQ,IAAR,CAAP;EACD,GApIW;EAqIZoD,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB7Z,KAAnB,EAA0B;EACnC;EACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAK0X,UAAL,GAAkB1X,KAAlB;EACA,aAAO,IAAP;EACD;;EAED,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,GAAoBC,IAApB,EAAR;EACA,UAAI5F,GAAG,GAAGgR,IAAI,CAAC,OAAD,CAAJ,GAAgBmD,OAAhB,CAAwB9P,KAAxB,CAAV;;EAEA,UAAIrE,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAGgR,IAAI,CAAC,MAAD,CAAJ,GAAemD,OAAf,CAAuB9P,KAAvB,CAAN;EACD;;EAED,UAAIrE,GAAG,KAAK,CAAC,CAAb,EAAgB;EACdA,QAAAA,GAAG,GAAG,CAAN,CADc;EAEf;;EAED,WAAK+b,UAAL,GAAkB/b,GAAlB;EACD,KAdD,MAcO;EACL4I,MAAAA,OAAO,CAACC,IAAR,CAAa,wDAAb,EAAuExE,KAAvE;EACD;;EAED,WAAO,IAAP;EACD;EA/JW,CAAd;;AAkKApC,WAAO,CAACkc,KAAR,GAAgBlc,SAAO,CAACib,KAAxB;AACAjb,WAAO,CAACmc,KAAR,GAAgBnc,SAAO,CAAC8W,OAAxB;AACA9W,WAAO,CAACoc,IAAR,GAAepc,SAAO,CAAC+Y,KAAvB;EACA,IAAIsD,SAAS,GAAGrc,SAAhB;;EAIA,IAAIsc,YAAY,GAAG7a,GAAG,CAACC,UAAvB;;EAEA,IAAI6a,QAAQ,GAAG,SAASA,QAAT,CAAkB/a,CAAlB,EAAqB;EAClC;EACA,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,IAAAA,CAAC,GAAGxD,QAAQ,CAACwD,CAAD,EAAI,EAAJ,CAAZ;EACD;;EAED,SAAOA,CAAP;EACD,CAPD;;EASA,IAAI8M,KAAK,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,QAAlC,EAA4C,QAA5C,EAAsD,aAAtD,CAAZ;;EAEA,IAAIkO,OAAO,GAAG,SAASA,OAAT,CAAiBvY,CAAjB,EAAoBJ,GAApB,EAAyByG,IAAzB,EAA+B;EAC3C,MAAI9I,CAAC,GAAG8M,KAAK,CAAC4D,OAAN,CAAc5H,IAAd,CAAR;EACA,MAAI6B,GAAG,GAAGmC,KAAK,CAACsK,KAAN,CAAYpX,CAAZ,EAAe8M,KAAK,CAAC5L,MAArB,CAAV;;EAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgJ,GAAG,CAACzJ,MAAxB,EAAgCS,CAAC,EAAjC,EAAqC;EACnC,QAAIsZ,IAAI,GAAG5Y,GAAG,CAACsI,GAAG,CAAChJ,CAAD,CAAJ,CAAH,EAAX;EACAc,IAAAA,CAAC,CAACkI,GAAG,CAAChJ,CAAD,CAAJ,CAAD,CAAUsZ,IAAV;EACD;;EAED,SAAOxY,CAAP;EACD,CAVD;;EAYA,IAAIE,GAAG,GAAG;EACRiG,EAAAA,YAAY,EAAE,SAASA,YAAT,CAAsBnG,CAAtB,EAAyBzC,CAAzB,EAA4B;EACxCA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI4E,OAAO,GAAGnC,CAAC,CAAC6F,WAAF,EAAd;EACA,QAAIY,IAAI,GAAGtE,OAAO,GAAG5E,CAArB,CAHwC;;EAKxC,WAAOyC,CAAC,CAACF,KAAF,GAAU2G,IAAjB;EACD,GAPO;EAQRM,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB/G,CAAjB,EAAoBzC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAIkJ,IAAI,GAAGzG,CAAC,CAAC8F,MAAF,KAAavI,CAAxB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACL,MAAhC;EACA,WAAO9F,CAAC,CAACF,KAAF,GAAUoC,KAAjB;EACD,GAbO;EAcRuR,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBzT,CAAjB,EAAoBzC,CAApB,EAAuB;EAC9BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA,QAAIwG,IAAI,GAAGzG,CAAC,CAAC+F,MAAF,KAAaxI,CAAxB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACJ,MAAhC;EACA/F,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX,CAL8B;EAM9B;EACA;EACA;EACA;EACA;EACA;;EAEAqW,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,QAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD,GA7BO;EA8BR4T,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe1T,CAAf,EAAkBzC,CAAlB,EAAqB;EAC1BA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;;EAEA,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,GAAG,CAAR,EAAW;EAChBA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA,QAAIwG,IAAI,GAAGzG,CAAC,CAACgG,IAAF,KAAWzI,CAAtB;EACA,QAAI2E,KAAK,GAAGuE,IAAI,GAAGN,YAAY,CAACH,IAAhC;EACAhG,IAAAA,CAAC,CAACF,KAAF,IAAWoC,KAAX;EACAiF,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAEzI;EADE,KAAJ,CAAN;EAGAgb,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,QAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD,GAhDO;EAiDR;EACA9E,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcgF,CAAd,EAAiB1B,GAAjB,EAAsB;EAC1B,QAAI7E,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,mCAAV,CAAR;;EAEA,QAAI,CAACZ,CAAL,EAAQ;EACN;EACAA,MAAAA,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,qBAAV,CAAJ;;EAEA,UAAI,CAACZ,CAAL,EAAQ;EACN,eAAOuG,CAAC,CAACF,KAAT;EACD;;EAEDrG,MAAAA,CAAC,CAAC6b,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,GAAf,EARM;EASP;;EAED,QAAIpI,GAAG,GAAG,KAAV;EACA,QAAIlH,IAAI,GAAGjM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;EACA,QAAIsM,MAAM,GAAGhM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAArB;;EAEA,QAAIuM,IAAI,GAAG,EAAX,EAAe;EACbkH,MAAAA,GAAG,GAAG,IAAN;EACD,KApByB;;;EAuB1B,QAAIA,GAAG,KAAK,KAAZ,EAAmB;EACjB,UAAIzT,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBuM,IAAI,KAAK,EAA9B,EAAkC;EAChC;EACAA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIvM,CAAC,CAAC,CAAD,CAAD,KAAS,IAAT,IAAiBuM,IAAI,GAAG,EAA5B,EAAgC;EAC9B;EACAA,QAAAA,IAAI,IAAI,EAAR;EACD;EACF;;EAEDhG,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAJ;EACAhG,IAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAASA,MAAT,CAAJ;EACA/F,IAAAA,CAAC,GAAGA,CAAC,CAAC8F,MAAF,CAAS,CAAT,CAAJ;EACA9F,IAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAc,CAAd,CAAJ;EACA,WAAO7F,CAAC,CAACF,KAAT;EACD,GA1FO;EA2FRlF,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcoF,CAAd,EAAiBzC,CAAjB,EAAoB;EACxBA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ,CADwB;;EAGxB,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV,UAAIjD,KAAK,GAAG0F,CAAC,CAAC1F,KAAF,EAAZ;EACA,UAAIoO,GAAG,GAAGF,cAAc,CAAClO,KAAD,CAAxB,CAFU;;EAIV,UAAIA,KAAK,KAAK,CAAV,IAAeiD,CAAC,KAAK,EAArB,IAA2B8a,YAAY,CAACrY,CAAC,CAACtC,IAAF,EAAD,CAA3C,EAAuD;EACrDgL,QAAAA,GAAG,GAAG,EAAN;EACD;;EAED,UAAInL,CAAC,GAAGmL,GAAR,EAAa;EACXnL,QAAAA,CAAC,GAAGmL,GAAJ;EACD;EACF,KAduB;;;EAiBxB,QAAInL,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRpF,MAAAA,IAAI,EAAE2C;EADE,KAAJ,CAAN;EAGA,WAAOyC,CAAC,CAACF,KAAT;EACD,GApHO;EAqHR;EACAxF,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkBzC,CAAlB,EAAqB;EAC1B,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBA,MAAAA,CAAC,GAAGkK,MAAM,CAACG,OAAP,GAAiBrK,CAAC,CAACkC,WAAF,EAAjB,CAAJ;EACD;;EAEDlC,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ,CAL0B;;EAO1B,QAAIA,CAAC,IAAI,EAAT,EAAa;EACXA,MAAAA,CAAC,GAAG,EAAJ;EACD;;EAED,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD;;EAED,QAAI3C,IAAI,GAAGoF,CAAC,CAACpF,IAAF,EAAX,CAf0B;;EAiB1B,QAAIA,IAAI,GAAG4N,cAAc,CAACjL,CAAD,CAAzB,EAA8B;EAC5B;EACA3C,MAAAA,IAAI,GAAG4N,cAAc,CAACjL,CAAD,CAArB;EACD;;EAED4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACR1F,MAAAA,KAAK,EAAEiD,CADC;EAER3C,MAAAA,IAAI,EAAEA;EAFE,KAAJ,CAAN;EAIA,WAAOoF,CAAC,CAACF,KAAT;EACD,GAjJO;EAkJRpC,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiBzC,CAAjB,EAAoB;EACxBA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA4J,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRtC,MAAAA,IAAI,EAAEH;EADE,KAAJ,CAAN;EAGA,WAAOyC,CAAC,CAACF,KAAT;EACD,GAxJO;EAyJR4P,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB1P,CAAnB,EAAsBzC,CAAtB,EAAyB;EAClCA,IAAAA,CAAC,GAAG+a,QAAQ,CAAC/a,CAAD,CAAZ;EACA,QAAI0J,GAAG,GAAGjH,CAAC,CAACC,KAAF,EAAV;EACA1C,IAAAA,CAAC,IAAI,CAAL,CAHkC;;EAKlC,QAAIA,CAAC,IAAI,CAAT,EAAY;EACVA,MAAAA,CAAC,GAAG,CAAJ;EACD,KAFD,MAEO,IAAIA,CAAC,IAAI,GAAT,EAAc;EACnBA,MAAAA,CAAC,GAAG,GAAJ;EACD;;EAEDyC,IAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;EACAnI,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAMrM,CAAN,EAAS,KAAT,CAAJ;EACAgb,IAAAA,OAAO,CAACvY,CAAD,EAAIiH,GAAJ,EAAS,MAAT,CAAP;EACA,WAAOjH,CAAC,CAACF,KAAT;EACD;EAxKO,CAAV;EA2KA,IAAI2Y,WAAS,GAAG;EACd5S,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB/L,GAArB,EAA0B;EACrC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACiG,YAAJ,CAAiBnG,CAAjB,EAAoBlG,GAApB,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO+c,eAAP,EAAP;EACD,GATa;EAUd5S,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBhM,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC6G,OAAJ,CAAY/G,CAAZ,EAAelG,GAAf,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOgd,UAAP,EAAP;EACD,GAlBa;EAmBd5S,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBjM,GAAhB,EAAqB;EAC3B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACuT,OAAJ,CAAYzT,CAAZ,EAAelG,GAAf,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOid,UAAP,EAAP;EACD,GA3Ba;EA4Bd5S,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclM,GAAd,EAAmB;EACvB,QAAI6B,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI7B,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAalG,GAAb,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAOrE,CAAC,CAAC+F,QAAF,EAAP;EACD,GAtCa;EAuCd;EACAmX,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB/e,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,UAAI6Y,OAAO,GAAGhf,GAAG,GAAG,CAApB;;EAEAgf,MAAAA,OAAO,GAAGA,OAAO,GAAG,EAApB;;EAEA,UAAIC,KAAK,GAAGhf,QAAQ,CAACD,GAAD,EAAM,EAAN,CAApB;;EAEAkG,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAa+Y,KAAb,CAAV;EACA/Y,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACuT,OAAJ,CAAYzT,CAAZ,EAAe8Y,OAAf,CAAV;EACA,aAAO9Y,CAAP;EACD;;EAED,QAAIrE,CAAC,GAAG,KAAKA,CAAb;EACA,QAAIqK,IAAI,GAAGrK,CAAC,CAAC+F,QAAF,EAAX;EACA,QAAIqE,MAAM,GAAGpK,CAAC,CAACid,UAAF,EAAb;EACA7S,IAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACA,WAAOC,IAAI,GAAGD,MAAd;EACD,GA5Da;EA6Dd;EACAsG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/N,GAAhB,EAAqB;EAC3B,QAAI3C,CAAC,GAAG,KAAKA,CAAb;;EAEA,QAAI2C,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAG,KAAKA,GAAX;EACA,UAAI7E,CAAC,GAAG6E,GAAG,CAACjE,KAAJ,CAAU,mBAAV,CAAR;;EAEA,UAAIZ,CAAJ,EAAO;EACL,YAAIuM,IAAI,GAAGjM,QAAQ,CAACN,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAnB;;EAEA,YAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,IAAb,EAAmB;EACjBuM,UAAAA,IAAI,IAAI,EAAR;EACD;;EAEDhG,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwT,KAAJ,CAAU1T,CAAV,EAAagG,IAAb,CAAV;EACD;;EAED,aAAOhG,CAAP;EACD,KAnB0B;;;EAsB3B,QAAIqM,MAAM,GAAG1Q,CAAC,CAAC+F,QAAF,EAAb;;EAEA,QAAI2K,MAAM,GAAG,EAAb,EAAiB;EACfA,MAAAA,MAAM,GAAGA,MAAM,GAAG,EAAlB;EACD;;EAED,QAAIA,MAAM,KAAK,CAAf,EAAkB;EAChBA,MAAAA,MAAM,GAAG,EAAT;EACD;;EAED,WAAOA,MAAP;EACD,GA/Fa;EAgGd;EACArR,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsD,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAClF,IAAJ,CAASgF,CAAT,EAAY1B,GAAZ,CAAV;EACA,aAAO0B,CAAP;EACD;;EAED,WAAO,GAAGU,MAAH,CAAU,KAAKiQ,GAAL,EAAV,EAAsB,GAAtB,EAA2BjQ,MAA3B,CAAkClD,GAAG,CAACa,OAAJ,CAAY,KAAK0H,MAAL,EAAZ,CAAlC,EAA8DrF,MAA9D,CAAqE,KAAK0H,IAAL,EAArE,CAAP;EACD,GAzGa;EA0Gd;EACAA,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcjK,KAAd,EAAqB;EACzB,QAAI6a,KAAK,GAAG,IAAZ;EACA,QAAIhT,IAAI,GAAG,KAAKA,IAAL,EAAX;;EAEA,QAAIA,IAAI,IAAI,EAAZ,EAAgB;EACdgT,MAAAA,KAAK,GAAG,IAAR;EACD;;EAED,QAAI,OAAO7a,KAAP,KAAiB,QAArB,EAA+B;EAC7B,aAAO6a,KAAP;EACD,KAVwB;;;EAazB,QAAIhZ,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA9B,IAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,GAAoBC,IAApB,EAAR,CAdyB;EAezB;;EAEA,QAAIsG,IAAI,IAAI,EAAR,IAAc7H,KAAK,KAAK,IAA5B,EAAkC;EAChC;EACA6H,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOhG,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,QAAIA,IAAI,GAAG,EAAP,IAAa7H,KAAK,KAAK,IAA3B,EAAiC;EAC/B6H,MAAAA,IAAI,IAAI,EAAR;EACA,aAAOhG,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAP;EACD;;EAED,WAAOhG,CAAP;EACD,GAxIa;EAyId;EACAiZ,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB3a,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIwa,KAAK,GAAG;EACVC,QAAAA,OAAO,EAAE,QADC;EAEVC,QAAAA,SAAS,EAAE,QAFD;EAGVC,QAAAA,IAAI,EAAE,SAHI;EAIVC,QAAAA,KAAK,EAAE,SAJG;EAKVC,QAAAA,SAAS,EAAE,QALD;EAMVC,QAAAA,OAAO,EAAE,QANC;EAOVC,QAAAA,MAAM,EAAE,QAPE;EAQVC,QAAAA,KAAK,EAAE,SARG;EASVC,QAAAA,QAAQ,EAAE;EATA,OAAZ;EAWA,UAAI3Z,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;EACAA,MAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,EAAN;;EAEA,UAAIyZ,KAAK,CAAC3T,cAAN,CAAqBjH,GAArB,MAA8B,IAAlC,EAAwC;EACtC0B,QAAAA,CAAC,GAAGA,CAAC,CAAChF,IAAF,CAAOke,KAAK,CAAC5a,GAAD,CAAZ,CAAJ;EACD;;EAED,aAAO0B,CAAP;EACD;;EAED,QAAIoF,CAAC,GAAG,KAAKY,IAAL,EAAR;;EAEA,QAAIZ,CAAC,GAAG,CAAR,EAAW;EACT,aAAO,OAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,WAAP;EACD;;EAED,QAAIA,CAAC,GAAG,EAAR,EAAY;EACV;EACA,aAAO,SAAP;EACD;;EAED,WAAO,OAAP;EACD,GAxLa;EAyLd;EACA6H,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAanT,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,aAAO,KAAKwB,GAAL,CAASpG,GAAT,CAAP;EACD;;EAED,WAAO,KAAKsK,MAAL,CAAY,KAAZ,CAAP;EACD;EAhMa,CAAhB;EAkMA,IAAIwV,OAAO,GAAGnB,WAAd;EAEA,IAAIoB,SAAS,GAAG;EACd;EACAjf,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcd,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACtF,IAAJ,CAASoF,CAAT,EAAYlG,GAAZ,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO8F,OAAP,EAAP;EACD,GAVa;EAWd;EACAwE,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa9H,KAAb,EAAoB;EACvB,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAO,KAAK/C,CAAL,CAAOme,MAAP,EAAP;EACD;;EAED,QAAItT,QAAQ,GAAG,KAAKvG,KAAL,EAAf;EACA,QAAIuY,IAAI,GAAGra,KAAX,CANuB;;EAQvB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,MAAAA,KAAK,GAAGA,KAAK,CAACsB,WAAN,EAAR;EACA+Y,MAAAA,IAAI,GAAG1N,IAAI,CAAC,OAAD,CAAJ,GAAgBmD,OAAhB,CAAwB9P,KAAxB,CAAP;;EAEA,UAAIqa,IAAI,KAAK,CAAC,CAAd,EAAiB;EACfA,QAAAA,IAAI,GAAG1N,IAAI,CAAC,MAAD,CAAJ,GAAemD,OAAf,CAAuB9P,KAAvB,CAAP;EACD;EACF,KAfsB;;;EAkBvB,QAAI8H,GAAG,GAAG,KAAKtK,CAAL,CAAOme,MAAP,EAAV;EACA,QAAIrT,IAAI,GAAGR,GAAG,GAAGuS,IAAjB;EACA,QAAIxY,CAAC,GAAG,KAAK8J,QAAL,CAAcrD,IAAI,GAAG,EAArB,EAAyB,OAAzB,CAAR,CApBuB;;EAsBvBU,IAAAA,MAAM,CAACnH,CAAD,EAAI;EACRgG,MAAAA,IAAI,EAAEQ,QAAQ,CAACR,IAAT,EADE;EAERD,MAAAA,MAAM,EAAES,QAAQ,CAACT,MAAT,EAFA;EAGRD,MAAAA,MAAM,EAAEU,QAAQ,CAACV,MAAT;EAHA,KAAJ,CAAN;EAKA,WAAO9F,CAAP;EACD,GAxCa;EAyCd;EACAoL,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBjN,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAOoM,IAAI,CAAC,MAAD,CAAJ,GAAe,KAAK7E,GAAL,EAAf,CAAP;EACD;;EAED,QAAIjG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAM9H,KAAN,CAAJ;EACA,WAAO6B,CAAP;EACD,GAlDa;EAmDd;EACA1F,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe6D,KAAf,EAAsB;EAC3B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAAC5F,KAAJ,CAAU0F,CAAV,EAAa7B,KAAb,CAAV;EACA,aAAO6B,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAO6F,QAAP,EAAP;EACD;EA5Da,CAAhB;EA8DA,IAAIuY,OAAO,GAAGF,SAAd;;EAEA,IAAIG,YAAY,GAAG,SAASA,YAAT,CAAsBha,CAAtB,EAAyB;EAC1CA,EAAAA,CAAC,GAAGA,CAAC,CAAC+F,MAAF,CAAS,CAAT,CAAJ;EACA/F,EAAAA,CAAC,GAAGA,CAAC,CAAC8F,MAAF,CAAS,CAAT,CAAJ;EACA9F,EAAAA,CAAC,GAAGA,CAAC,CAAC6F,WAAF,CAAc,CAAd,CAAJ;EACA,SAAO7F,CAAP;EACD,CALD;;EAOA,IAAIia,SAAS,GAAG;EACd;EACAvK,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB5V,GAAnB,EAAwB;EACjC,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACwP,SAAJ,CAAc1P,CAAd,EAAiBlG,GAAjB,CAAV;EACA,aAAOkG,CAAP;EACD,KALgC;;;EAQjC,QAAIka,GAAG,GAAG,CAAV;EACA,QAAI5f,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;EACA,QAAI5B,GAAJ,CAViC;;EAYjC,SAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI5E,KAArB,EAA4B4E,CAAC,EAA7B,EAAiC;EAC/BU,MAAAA,GAAG,GAAG,IAAImC,IAAJ,EAAN;EACAnC,MAAAA,GAAG,CAACua,OAAJ,CAAY,CAAZ;EACAva,MAAAA,GAAG,CAACwa,WAAJ,CAAgB,KAAKze,CAAL,CAAOmL,WAAP,EAAhB,EAH+B;;EAK/BlH,MAAAA,GAAG,CAACya,QAAJ,CAAa,CAAb;EACAza,MAAAA,GAAG,CAAC0a,UAAJ,CAAe,CAAf;EACA1a,MAAAA,GAAG,CAAC2a,QAAJ,CAAarb,CAAb;EACAU,MAAAA,GAAG,CAACya,QAAJ,CAAa,CAAC,CAAd,EAR+B;;EAU/BH,MAAAA,GAAG,IAAIta,GAAG,CAAC6B,OAAJ,EAAP;EACD;;EAED,WAAOyY,GAAG,GAAG,KAAKve,CAAL,CAAO8F,OAAP,EAAb;EACD,GA5Ba;EA6Bd;EACAyE,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcpM,GAAd,EAAmB;EACvB;EACA,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQ,CAAR,CAAJ;EACA0F,MAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,MAAAA,CAAC,GAAGA,CAAC,CAACiG,GAAF,CAAM,QAAN,CAAJ;EACAjG,MAAAA,CAAC,GAAGga,YAAY,CAACha,CAAD,CAAhB,CALqB;;EAOrB,UAAIA,CAAC,CAAC2L,SAAF,OAAkB,UAAtB,EAAkC;EAChC3L,QAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,MAAT,CAAJ;EACD;;EAED9P,MAAAA,GAAG,IAAI,CAAP,CAXqB;;EAarBkG,MAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAM9P,GAAN,EAAW,OAAX,CAAJ;EACA,aAAOkG,CAAP;EACD,KAjBsB;;;EAoBvB,QAAIJ,GAAG,GAAG,KAAKK,KAAL,EAAV;EACAL,IAAAA,GAAG,GAAGA,GAAG,CAACtF,KAAJ,CAAU,CAAV,CAAN;EACAsF,IAAAA,GAAG,GAAGA,GAAG,CAAChF,IAAJ,CAAS,CAAT,CAAN;EACAgF,IAAAA,GAAG,GAAGoa,YAAY,CAACpa,GAAD,CAAlB;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACqG,GAAJ,CAAQ,QAAR,CAAN,CAxBuB;;EA0BvB,QAAIrG,GAAG,CAAC+L,SAAJ,OAAoB,UAAxB,EAAoC;EAClC/L,MAAAA,GAAG,GAAGA,GAAG,CAACgK,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD,KA5BsB;;;EA+BvB,QAAI4Q,KAAK,GAAG,CAAZ;;EAEA,QAAI5a,GAAG,CAAChF,IAAJ,OAAe,CAAnB,EAAsB;EACpB4f,MAAAA,KAAK,GAAG,CAAR;EACD;;EAED5a,IAAAA,GAAG,GAAGA,GAAG,CAAC6a,KAAJ,CAAU,CAAV,EAAa,QAAb,CAAN;EACA,QAAIC,OAAO,GAAG,KAAK5a,KAAnB,CAtCuB;;EAwCvB,QAAIF,GAAG,CAACE,KAAJ,GAAY4a,OAAhB,EAAyB;EACvB,aAAO,CAAP;EACD,KA1CsB;;;EA6CvB,QAAIxb,CAAC,GAAG,CAAR;EACA,QAAIyb,SAAS,GAAG,KAAKrgB,KAAL,KAAe,CAA/B;EACAsF,IAAAA,GAAG,CAACE,KAAJ,IAAaqG,YAAY,CAACD,IAAb,GAAoByU,SAAjC;EACAzb,IAAAA,CAAC,IAAIyb,SAAL;;EAEA,WAAOzb,CAAC,GAAG,EAAX,EAAeA,CAAC,EAAhB,EAAoB;EAClB,UAAIU,GAAG,CAACE,KAAJ,GAAY4a,OAAhB,EAAyB;EACvB,eAAOxb,CAAC,GAAGsb,KAAX;EACD;;EAED5a,MAAAA,GAAG,GAAGA,GAAG,CAACgK,GAAJ,CAAQ,CAAR,EAAW,MAAX,CAAN;EACD;;EAED,WAAO,EAAP;EACD,GAzFa;EA0Fd;EACA+B,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmBxN,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,aAAO+I,MAAM,CAAC,MAAD,CAAN,GAAiB,KAAKnN,KAAL,EAAjB,CAAP;EACD;;EAED,QAAI0F,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,IAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQ6D,KAAR,CAAJ;EACA,WAAO6B,CAAP;EACD,GAnGa;EAoGd;EACA0M,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5S,GAAjB,EAAsB;EAC7B,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAI,OAAO5E,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,QAAAA,GAAG,GAAGA,GAAG,CAACyF,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACAzF,QAAAA,GAAG,GAAGC,QAAQ,CAACD,GAAD,EAAM,EAAN,CAAd;EACD;;EAED,UAAI4b,QAAQ,CAAC5b,GAAD,CAAZ,EAAmB;EACjB,YAAIkG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA,YAAI2a,MAAM,GAAGlF,QAAQ,CAAC5b,GAAD,CAAR,CAAc,CAAd,CAAb;EACAkG,QAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQsgB,MAAR,CAAJ;EACA5a,QAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,QAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACA,eAAOnI,CAAP;EACD;EACF;;EAED,QAAI1F,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;;EAEA,SAAK,IAAItC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwW,QAAQ,CAACjX,MAA7B,EAAqCS,CAAC,EAAtC,EAA0C;EACxC,UAAI5E,KAAK,GAAGob,QAAQ,CAACxW,CAAD,CAAR,CAAY,CAAZ,CAAZ,EAA4B;EAC1B,eAAOA,CAAC,GAAG,CAAX;EACD;EACF;;EAED,WAAO,CAAP;EACD,GA/Ha;EAgId;EACAvE,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgBwD,KAAhB,EAAuB;EAC7B,QAAI4E,GAAG,GAAG,OAAV;;EAEA,QAAI,KAAKgT,UAAL,OAAsB,OAA1B,EAAmC;EACjChT,MAAAA,GAAG,GAAG,OAAN;EACD;;EAED,QAAI5E,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,WAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3F,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAjC,EAAyCS,CAAC,EAA1C,EAA8C;EAC5C,YAAIf,KAAK,KAAK5E,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAAd,EAAkC;EAChCc,UAAAA,CAAC,GAAGA,CAAC,CAAC1F,KAAF,CAAQf,SAAO,CAACwJ,GAAD,CAAP,CAAa7D,CAAb,EAAgB,CAAhB,CAAR,CAAJ;EACAc,UAAAA,CAAC,GAAGA,CAAC,CAACpF,IAAF,CAAO,CAAP,CAAJ;EACAoF,UAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAJ;EACD;EACF;;EAED,aAAOnI,CAAP;EACD;;EAED,QAAI1F,KAAK,GAAG,KAAKqB,CAAL,CAAO6F,QAAP,EAAZ;;EAEA,SAAK,IAAIgG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGjO,SAAO,CAACwJ,GAAD,CAAP,CAAatE,MAAb,GAAsB,CAA5C,EAA+C+I,EAAE,EAAjD,EAAqD;EACnD,UAAIlN,KAAK,IAAIf,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAb,EAAiB,CAAjB,CAAT,IAAgClN,KAAK,GAAGf,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAE,GAAG,CAAlB,EAAqB,CAArB,CAA5C,EAAqE;EACnE,eAAOjO,SAAO,CAACwJ,GAAD,CAAP,CAAayE,EAAb,EAAiB,CAAjB,CAAP;EACD;EACF;;EAED,WAAO,QAAP;EACD,GA/Ja;EAgKd;EACA9J,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc5D,GAAd,EAAmB;EACvB,QAAIA,GAAG,KAAK4E,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACAD,MAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYlG,GAAZ,CAAV;EACA,aAAOkG,CAAP;EACD;;EAED,WAAO,KAAKrE,CAAL,CAAOmL,WAAP,EAAP;EACD,GAzKa;EA0Kd;EACA6F,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAarO,GAAb,EAAkB;EACrB,QAAIA,GAAG,KAAKI,SAAZ,EAAuB;EACrB,UAAIsB,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA3B,MAAAA,GAAG,GAAGA,GAAG,CAACmB,WAAJ,EAAN,CAFqB;;EAIrB,UAAI/B,IAAI,GAAGsC,CAAC,CAACrE,CAAF,CAAImL,WAAJ,EAAX,CAJqB;;EAMrB,UAAIxI,GAAG,KAAK,IAAR,IAAgBZ,IAAI,GAAG,CAA3B,EAA8B;EAC5BsC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYtC,IAAI,GAAG,CAAC,CAApB,CAAV;EACD,OARoB;;;EAWrB,UAAIY,GAAG,KAAK,IAAR,IAAgBZ,IAAI,GAAG,CAA3B,EAA8B;EAC5BsC,QAAAA,CAAC,CAACF,KAAF,GAAUI,GAAG,CAACxC,IAAJ,CAASsC,CAAT,EAAYtC,IAAI,GAAG,CAAC,CAApB,CAAV;EACD;;EAED,aAAOsC,CAAP;EACD;;EAED,QAAI,KAAKrE,CAAL,CAAOmL,WAAP,KAAuB,CAA3B,EAA8B;EAC5B,aAAO,IAAP;EACD;;EAED,WAAO,IAAP;EACD,GAnMa;EAoMd;EACAkP,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB7X,KAAhB,EAAuB;EAC7B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvBP,MAAAA,KAAK,GAAGmB,MAAM,CAACnB,KAAD,CAAd;EACAA,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,aAAd,EAA6B,IAA7B,CAAR,CAFuB;;EAIvBpB,MAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAJuB;;EAMvB,UAAI,CAACpB,KAAL,EAAY;EACVuE,QAAAA,OAAO,CAACC,IAAR,CAAa,iCAAb;EACA,eAAO,IAAP;EACD,OATsB;;;EAYvB,UAAIxE,KAAK,CAACM,MAAN,KAAiB,CAAjB,IAAsB,aAAa+G,IAAb,CAAkBrH,KAAlB,CAA1B,EAAoD;EAClDA,QAAAA,KAAK,GAAG,OAAOA,KAAf;EACD;;EAED,UAAIT,IAAI,GAAGiG,MAAM,CAACxF,KAAD,CAAjB;;EAEA,UAAIH,KAAK,CAACN,IAAD,CAAT,EAAiB;EACf,eAAO,IAAP;EACD,OApBsB;;;EAuBvBA,MAAAA,IAAI,GAAG6C,IAAI,CAAC0K,KAAL,CAAWvN,IAAI,GAAG,EAAlB,IAAwB,EAA/B;EACA,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP,CAxBuB;EAyBxB;;EAED,WAAO,KAAKyK,OAAL,CAAa,QAAb,EAAuBzK,IAAvB,EAAP;EACD,GAlOa;EAmOd;EACAuY,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB9X,KAAjB,EAAwB;EAC/B,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7BpB,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,gCAAd,EAAgD,UAAUgR,CAAV,EAAa0C,CAAb,EAAgBb,CAAhB,EAAmB;EACzE,cAAIA,CAAC,CAAC/X,KAAF,CAAQ,WAAR,CAAJ,EAA0B;EACxB4Y,YAAAA,CAAC,GAAG,MAAMA,CAAV;EACD;;EAED,iBAAOA,CAAP;EACD,SANO,CAAR;EAOA9U,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR,CAV6B;EAW9B;;EAED,UAAI7B,IAAI,GAAGiG,MAAM,CAACxF,KAAD,CAAjB;;EAEA,UAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;EAChBuE,QAAAA,OAAO,CAACC,IAAR,CAAa,kCAAb;EACA,eAAO,IAAP;EACD,OAnBsB;;;EAsBvB,UAAIjF,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,UAAIA,IAAI,IAAI,CAAZ,EAAe;EACbA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD,OAFD,MAEO;EACLA,QAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAa,GAApB;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAlC8B;;;EAqC/B,QAAI5D,GAAG,GAAG,KAAKqO,OAAL,CAAa,SAAb,EAAwBzK,IAAxB,EAAV;EACA5D,IAAAA,GAAG,GAAGyG,IAAI,CAAC0K,KAAL,CAAWnR,GAAG,GAAG,GAAjB,CAAN;;EAEA,QAAIA,GAAG,GAAG,CAAV,EAAa;EACX,aAAOA,GAAG,GAAG,CAAb;EACD;;EAED,WAAOA,GAAG,GAAG,CAAb;EACD,GAjRa;EAkRd;EACA+gB,EAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB1c,KAAnB,EAA0B;EACnC,QAAIA,KAAK,KAAKO,SAAd,EAAyB;EACvB,UAAI,OAAOP,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,QAAAA,KAAK,GAAGA,KAAK,CAACoB,OAAN,CAAc,sBAAd,EAAsC,IAAtC,CAAR,CAD6B;;EAG7BpB,QAAAA,KAAK,GAAGwF,MAAM,CAACxF,KAAD,CAAd;;EAEA,YAAIH,KAAK,CAACG,KAAD,CAAT,EAAkB;EAChBuE,UAAAA,OAAO,CAACC,IAAR,CAAa,oCAAb;EACA,iBAAO,IAAP;EACD;EACF;;EAED,UAAIxE,KAAK,GAAG,CAAZ,EAAe;EACbA,QAAAA,KAAK,IAAI,CAAT;EACD;;EAED,UAAIT,IAAI,GAAGS,KAAK,GAAG,IAAnB,CAhBuB;;EAkBvB,UAAIT,IAAI,KAAK,CAAb,EAAgB;EACdA,QAAAA,IAAI,GAAG,CAAP;EACD;;EAED,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACD,KAxBkC;;;EA2BnC,QAAI5D,GAAG,GAAGyG,IAAI,CAAC0K,KAAL,CAAW,KAAKvN,IAAL,KAAc,IAAzB,CAAV;;EAEA,QAAI5D,GAAG,IAAI,CAAX,EAAc;EACZA,MAAAA,GAAG,IAAI,CAAP;EACD;;EAED,WAAOA,GAAP;EACD;EArTa,CAAhB;EAuTA,IAAIghB,OAAO,GAAGb,SAAd;EAEA,IAAIc,SAAS,GAAGnd,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkBqP,OAAlB,EAA2BG,OAA3B,EAAoCe,OAApC,CAAhB;;EAEAC,SAAS,CAAC5U,YAAV,GAAyB4U,SAAS,CAAClV,WAAnC;EACAkV,SAAS,CAAChU,OAAV,GAAoBgU,SAAS,CAACjV,MAA9B;EACAiV,SAAS,CAACtH,OAAV,GAAoBsH,SAAS,CAAChV,MAA9B;EACAgV,SAAS,CAACrH,KAAV,GAAkBqH,SAAS,CAAC/U,IAA5B;EACA+U,SAAS,CAAC3O,MAAV,GAAmB2O,SAAS,CAAC/U,IAA7B;EACA+U,SAAS,CAACpK,GAAV,GAAgBoK,SAAS,CAAC1O,MAA1B;EACA0O,SAAS,CAAC7N,GAAV,GAAgB6N,SAAS,CAAC3O,MAA1B;EACA2O,SAAS,CAACjQ,IAAV,GAAiBiQ,SAAS,CAAC9U,GAA3B;;EAEA,IAAI+U,UAAU,GAAG,SAASA,UAAT,CAAoBC,KAApB,EAA2B;EAC1C;EACArd,EAAAA,MAAM,CAAC8F,IAAP,CAAYqX,SAAZ,EAAuBve,OAAvB,CAA+B,UAAU4C,CAAV,EAAa;EAC1C6b,IAAAA,KAAK,CAACpd,SAAN,CAAgBuB,CAAhB,IAAqB2b,SAAS,CAAC3b,CAAD,CAA9B;EACD,GAFD;EAGD,CALD;;EAOA,IAAI8b,KAAK,GAAGF,UAAZ;EAEA,IAAIG,YAAY,GAAG3d,GAAG,CAACC,UAAvB;;EAEA,IAAI2d,cAAc,GAAG,SAASA,cAAT,CAAwB9gB,KAAxB,EAA+BoD,IAA/B,EAAqC;EACxD,MAAIpD,KAAK,KAAK,CAAV,IAAe6gB,YAAY,CAACzd,IAAD,CAA/B,EAAuC;EACrC,WAAO,EAAP;EACD;;EAED,SAAO8K,cAAc,CAAClO,KAAD,CAArB;EACD,CAND;EAOA;;;EAGA,IAAI+gB,SAAS,GAAG,SAASA,SAAT,CAAmB7C,IAAnB,EAAyBvR,GAAzB,EAA8B;EAC5C;EACA,MAAIuR,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EAClB,QAAIiZ,KAAK,GAAGxZ,QAAQ,CAACye,IAAI,CAACle,KAAL,GAAa,EAAd,EAAkB,EAAlB,CAApB;EACAke,IAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,KAAa6V,KAAzB;EACAiF,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;EACD,GAJD,MAIO,IAAIke,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EACzB;EACA,QAAIghB,MAAM,GAAG/a,IAAI,CAAC0K,KAAL,CAAW1K,IAAI,CAACC,GAAL,CAASgY,IAAI,CAACle,KAAd,IAAuB,EAAlC,EAAsC,EAAtC,CAAb;;EAEAghB,IAAAA,MAAM,GAAG/a,IAAI,CAACC,GAAL,CAAS8a,MAAT,IAAmB,CAA5B;EACA9C,IAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,KAAa4d,MAAzB,CALyB;;EAOzB9C,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;EACAke,IAAAA,IAAI,CAACle,KAAL,GAAake,IAAI,CAACle,KAAL,GAAa,EAA1B;;EAEA,QAAIke,IAAI,CAACle,KAAL,KAAe,EAAnB,EAAuB;EACrBke,MAAAA,IAAI,CAACle,KAAL,GAAa,CAAb;EACD;EACF;;EAED,SAAOke,IAAP;EACD,CAtBD;;;EAyBA,IAAI+C,YAAY,GAAG,SAASA,YAAT,CAAsB/C,IAAtB,EAA4BvR,GAA5B,EAAiCiT,GAAjC,EAAsC;EACvD1B,EAAAA,IAAI,CAAC9a,IAAL,GAAYuJ,GAAG,CAACvJ,IAAJ,EAAZ;EACA8a,EAAAA,IAAI,CAACle,KAAL,GAAa2M,GAAG,CAAC3M,KAAJ,EAAb;EACA,MAAIM,IAAI,GAAGqM,GAAG,CAACrM,IAAJ,EAAX;EACA4d,EAAAA,IAAI,CAAC5d,IAAL,GAAYA,IAAI,GAAG2F,IAAI,CAACC,GAAL,CAAS0Z,GAAT,CAAnB;;EAEA,SAAO1B,IAAI,CAAC5d,IAAL,GAAY,CAAnB,EAAsB;EACpB4d,IAAAA,IAAI,CAACle,KAAL,IAAc,CAAd;;EAEA,QAAIke,IAAI,CAACle,KAAL,GAAa,CAAjB,EAAoB;EAClBke,MAAAA,IAAI,CAACle,KAAL,GAAa,EAAb;EACAke,MAAAA,IAAI,CAAC9a,IAAL,IAAa,CAAb;EACD;;EAED,QAAIgL,GAAG,GAAG0S,cAAc,CAAC5C,IAAI,CAACle,KAAN,EAAake,IAAI,CAAC9a,IAAlB,CAAxB;EACA8a,IAAAA,IAAI,CAAC5d,IAAL,IAAa8N,GAAb;EACD;;EAED,SAAO8P,IAAP;EACD,CAnBD;;;EAsBA,IAAIgD,UAAU,GAAG,SAASA,UAAT,CAAoBhD,IAApB,EAA0BvR,GAA1B,EAA+BiT,GAA/B,EAAoC;EACnD,MAAIxc,IAAI,GAAGuJ,GAAG,CAACvJ,IAAJ,EAAX;EACA,MAAIpD,KAAK,GAAG2M,GAAG,CAAC3M,KAAJ,EAAZ;EACA,MAAIoO,GAAG,GAAG0S,cAAc,CAAC9gB,KAAD,EAAQoD,IAAR,CAAxB;;EAEA,SAAOwc,GAAG,GAAGxR,GAAb,EAAkB;EAChBwR,IAAAA,GAAG,IAAIxR,GAAP;EACApO,IAAAA,KAAK,IAAI,CAAT;;EAEA,QAAIA,KAAK,IAAI,EAAb,EAAiB;EACfA,MAAAA,KAAK,IAAI,EAAT;EACAoD,MAAAA,IAAI,IAAI,CAAR;EACD;;EAEDgL,IAAAA,GAAG,GAAG0S,cAAc,CAAC9gB,KAAD,EAAQoD,IAAR,CAApB;EACD;;EAED8a,EAAAA,IAAI,CAACle,KAAL,GAAaA,KAAb;EACAke,EAAAA,IAAI,CAAC5d,IAAL,GAAYsf,GAAZ;EACA,SAAO1B,IAAP;EACD,CApBD;;EAsBA,IAAIiD,MAAM,GAAG;EACXhU,EAAAA,MAAM,EAAE4T,SADG;EAEXvQ,EAAAA,IAAI,EAAE0Q,UAFK;EAGXE,EAAAA,QAAQ,EAAEH;EAHC,CAAb;EAOA;EACA;EACA;;EAEA,IAAII,OAAO,GAAG,CAAC,aAAD,EAAgB,QAAhB,EAA0B,QAA1B,EAAoC,MAApC,EAA4C,MAA5C,EAAoD,OAApD,CAAd;EACA,IAAIC,IAAI,GAAG;EACT9V,EAAAA,MAAM,EAAE6V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CADC;EAET5O,EAAAA,MAAM,EAAE4V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAFC;EAGTiB,EAAAA,WAAW,EAAE+F,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAHJ;EAIT3O,EAAAA,IAAI,EAAE2V,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAJG;EAKT/Z,EAAAA,IAAI,EAAE+gB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CALG;EAMTra,EAAAA,KAAK,EAAEqhB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CANE;EAOTjI,EAAAA,OAAO,EAAEiP,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAPA;EAQTha,EAAAA,MAAM,EAAEghB,OAAO,CAAChH,KAAR,CAAc,CAAd,EAAiB,CAAjB,CARC;EASTjX,EAAAA,IAAI,EAAEie,OATG;EAUT3F,EAAAA,MAAM,EAAE2F,OAVC;EAWT1F,EAAAA,OAAO,EAAE0F;EAXA,CAAX;EAaAC,IAAI,CAAC1V,IAAL,GAAY0V,IAAI,CAAC5V,IAAjB;EACA4V,IAAI,CAACjhB,MAAL,GAAcihB,IAAI,CAAChhB,IAAnB;EACAghB,IAAI,CAAClP,OAAL,GAAekP,IAAI,CAAChhB,IAApB;;EAEA,IAAIihB,aAAa,GAAG;EAClBne,EAAAA,IAAI,EAAE,IADY;EAElBgP,EAAAA,OAAO,EAAE,IAFS;EAGlB/R,EAAAA,MAAM,EAAE,IAHU;EAIlBL,EAAAA,KAAK,EAAE,IAJW;EAKlB4L,EAAAA,IAAI,EAAE,IALY;EAMlBD,EAAAA,GAAG,EAAE;EANa,CAApB;EAQA,IAAI6V,QAAQ,GAAG;EACbxhB,EAAAA,KAAK,EAAE,IADM;EAEboS,EAAAA,OAAO,EAAE,IAFI;EAGb/R,EAAAA,MAAM,EAAE,IAHK;EAIb+C,EAAAA,IAAI,EAAE;EAJO,CAAf;;EAOA,IAAIqe,YAAY,GAAG,SAASf,UAAT,CAAoBgB,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAACne,SAAV,CAAoB+L,GAApB,GAA0B,UAAU9P,GAAV,EAAeuM,IAAf,EAAqB;EAC7C,QAAIrG,CAAC,GAAG,KAAKC,KAAL,EAAR;;EAEA,QAAI,CAACoG,IAAD,IAASvM,GAAG,KAAK,CAArB,EAAwB;EACtB,aAAOkG,CAAP,CADsB;EAEvB;;EAED,QAAIiH,GAAG,GAAG,KAAKhH,KAAL,EAAV;EACAoG,IAAAA,IAAI,GAAG7I,GAAG,CAACgC,SAAJ,CAAc6G,IAAd,CAAP,CAR6C;;EAU7C,QAAIF,YAAY,CAACE,IAAD,CAAhB,EAAwB;EACtBrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACE,IAAD,CAAZ,GAAqBvM,GAAhC;EACD,KAFD,MAEO,IAAIuM,IAAI,KAAK,MAAb,EAAqB;EAC1BrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACF,GAAb,IAAoBnM,GAAG,GAAG,CAA1B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,QAAnC,EAA6C;EAClDrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAAC7L,KAAb,IAAsBR,GAAG,GAAG,CAA5B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,QAAb,EAAuB;EAC5BrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAAC7L,KAAb,IAAsBR,GAAG,GAAG,CAA5B,CAAX;EACD,KAFM,MAEA,IAAIuM,IAAI,KAAK,aAAb,EAA4B;EACjCrG,MAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACJ,MAAb,GAAsB,EAAtB,GAA2BjM,GAAtC;EACD,KApB4C;;;EAuB7C,QAAI0e,IAAI,GAAG,EAAX;;EAEA,QAAIoD,IAAI,CAACvV,IAAD,CAAR,EAAgB;EACduV,MAAAA,IAAI,CAACvV,IAAD,CAAJ,CAAW7J,OAAX,CAAmB,UAAUgY,CAAV,EAAa;EAC9BgE,QAAAA,IAAI,CAAChE,CAAD,CAAJ,GAAUvN,GAAG,CAACuN,CAAD,CAAH,EAAV;EACD,OAFD;EAGD;;EAED,QAAIqH,aAAa,CAACxV,IAAD,CAAjB,EAAyB;EACvB,UAAII,IAAI,GAAGQ,GAAG,CAAC3C,QAAJ,GAAenC,OAAf,CAAuB/B,MAAvB,GAAgCJ,CAAC,CAACsE,QAAF,GAAanC,OAAb,CAAqB/B,MAAhE;EACAJ,MAAAA,CAAC,CAACF,KAAF,IAAW2G,IAAI,GAAG,IAAP,GAAc,IAAzB;EACD,KAlC4C;;;EAqC7C,QAAIJ,IAAI,KAAK,OAAb,EAAsB;EACpBmS,MAAAA,IAAI,CAACle,KAAL,GAAa2M,GAAG,CAAC3M,KAAJ,KAAcR,GAA3B,CADoB;;EAGpB0e,MAAAA,IAAI,GAAGiD,MAAM,CAAChU,MAAP,CAAc+Q,IAAd,EAAoBvR,GAApB,CAAP;EACD,KAzC4C;;;EA4C7C,QAAIZ,IAAI,KAAK,MAAb,EAAqB;EACnB,UAAI6T,GAAG,GAAGjT,GAAG,CAACrM,IAAJ,KAAad,GAAG,GAAG,CAA7B;;EAEA,UAAIogB,GAAG,IAAI,EAAP,IAAaA,GAAG,GAAG,CAAvB,EAA0B;EACxB1B,QAAAA,IAAI,CAAC5d,IAAL,GAAYsf,GAAZ;EACD;EACF,KAND;EAAA,SAOK,IAAI7T,IAAI,KAAK,MAAb,EAAqB;EACtB,YAAIvM,GAAG,GAAG,CAAV,EAAa;EACX0e,UAAAA,IAAI,GAAGiD,MAAM,CAACC,QAAP,CAAgBlD,IAAhB,EAAsBvR,GAAtB,EAA2BnN,GAA3B,CAAP;EACD,SAFD,MAEO;EACL;EACA,cAAImiB,IAAI,GAAGhV,GAAG,CAACrM,IAAJ,KAAad,GAAxB,CAFK;;;EAKL0e,UAAAA,IAAI,GAAGiD,MAAM,CAAC3Q,IAAP,CAAY0N,IAAZ,EAAkBvR,GAAlB,EAAuBgV,IAAvB,CAAP;EACD,SATqB;;;EAYtB,YAAIniB,GAAG,KAAK,CAAR,IAAamN,GAAG,CAACsN,MAAJ,CAAWvU,CAAX,EAAc,KAAd,CAAjB,EAAuC;EACrCwY,UAAAA,IAAI,CAAC5d,IAAL,GAAYqM,GAAG,CAACrM,IAAJ,KAAad,GAAzB;EACD;EACF,OAfE;EAAA,WAgBE,IAAIuM,IAAI,KAAK,MAAT,IAAmBrG,CAAC,CAACtC,IAAF,OAAauJ,GAAG,CAACvJ,IAAJ,EAApC,EAAgD;EACjDsC,UAAAA,CAAC,CAACF,KAAF,IAAWqG,YAAY,CAACD,IAAxB;EACD,SAFE;EAAA,aAGE,IAAIG,IAAI,KAAK,QAAb,EAAuB;EACxBmS,YAAAA,IAAI,CAAC9a,IAAL,GAAYsC,CAAC,CAACtC,IAAF,KAAW,EAAvB;EACD,WAFE,MAEI,IAAI2I,IAAI,KAAK,SAAb,EAAwB;EAC7BmS,YAAAA,IAAI,CAAC9a,IAAL,GAAYsC,CAAC,CAACtC,IAAF,KAAW,GAAvB;EACD,WA1EsC;;;EA6E7C,QAAIoe,QAAQ,CAACzV,IAAD,CAAZ,EAAoB;EAClB,UAAIqC,GAAG,GAAGF,cAAc,CAACgQ,IAAI,CAACle,KAAN,CAAxB;EACAke,MAAAA,IAAI,CAAC5d,IAAL,GAAYqM,GAAG,CAACrM,IAAJ,EAAZ;;EAEA,UAAI4d,IAAI,CAAC5d,IAAL,GAAY8N,GAAhB,EAAqB;EACnB8P,QAAAA,IAAI,CAAC5d,IAAL,GAAY8N,GAAZ;EACD;EACF;;EAEDvB,IAAAA,MAAM,CAACnH,CAAD,EAAIwY,IAAJ,CAAN;EACA,WAAOxY,CAAP;EACD,GAxFD,CADgD;;;EA4FhDgc,EAAAA,SAAS,CAACne,SAAV,CAAoBiM,QAApB,GAA+B,UAAUhQ,GAAV,EAAeuM,IAAf,EAAqB;EAClD,QAAIrG,CAAC,GAAG,KAAKC,KAAL,EAAR;EACA,WAAOD,CAAC,CAAC4J,GAAF,CAAM9P,GAAG,GAAG,CAAC,CAAb,EAAgBuM,IAAhB,CAAP;EACD,GAHD,CA5FgD;;;EAkGhD2V,EAAAA,SAAS,CAACne,SAAV,CAAoB4c,KAApB,GAA4BuB,SAAS,CAACne,SAAV,CAAoBiM,QAAhD;EACAkS,EAAAA,SAAS,CAACne,SAAV,CAAoBqe,IAApB,GAA2BF,SAAS,CAACne,SAAV,CAAoB+L,GAA/C;EACD,CApGD;;EAsGA,IAAIA,GAAG,GAAGmS,YAAV;;EAGA,IAAII,KAAK,GAAG;EACVtW,EAAAA,WAAW,EAAE,SAASA,WAAT,CAAqB7F,CAArB,EAAwB;EACnC,WAAOA,CAAC,CAACF,KAAT;EACD,GAHS;EAIVgG,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB9F,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0ChG,CAAC,CAAC+F,MAAF,EAA1C,EAAsD/F,CAAC,CAAC8F,MAAF,EAAtD,EAAkEjH,IAAlE,CAAuE,GAAvE,CAAP;EACD,GANS;EAOVkH,EAAAA,MAAM,EAAE,SAASA,MAAT,CAAgB/F,CAAhB,EAAmB;EACzB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0ChG,CAAC,CAAC+F,MAAF,EAA1C,EAAsDlH,IAAtD,CAA2D,GAA3D,CAAP;EACD,GATS;EAUVmH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAchG,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCoF,CAAC,CAACgG,IAAF,EAAhC,EAA0CnH,IAA1C,CAA+C,GAA/C,CAAP;EACD,GAZS;EAaVoH,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAajG,CAAb,EAAgB;EACnB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsB0F,CAAC,CAACpF,IAAF,EAAtB,EAAgCiE,IAAhC,CAAqC,GAArC,CAAP;EACD,GAfS;EAgBVqH,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAclG,CAAd,EAAiB;EACrB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAACkG,IAAF,EAAX,EAAqBrH,IAArB,CAA0B,GAA1B,CAAP;EACD,GAlBS;EAmBVvE,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAe0F,CAAf,EAAkB;EACvB,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC1F,KAAF,EAAX,EAAsBuE,IAAtB,CAA2B,GAA3B,CAAP;EACD,GArBS;EAsBV6N,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB1M,CAAjB,EAAoB;EAC3B,WAAO,CAACA,CAAC,CAACtC,IAAF,EAAD,EAAWsC,CAAC,CAAC0M,OAAF,EAAX,EAAwB7N,IAAxB,CAA6B,GAA7B,CAAP;EACD,GAxBS;EAyBVnB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAcsC,CAAd,EAAiB;EACrB,WAAOA,CAAC,CAACtC,IAAF,EAAP;EACD;EA3BS,CAAZ;EA6BAye,KAAK,CAACvhB,IAAN,GAAauhB,KAAK,CAAClW,GAAnB;;EAEA,IAAImW,YAAY,GAAG,SAASpB,UAAT,CAAoBgB,SAApB,EAA+B;EAChDA,EAAAA,SAAS,CAACne,SAAV,CAAoB0W,MAApB,GAA6B,UAAUtB,CAAV,EAAa5M,IAAb,EAAmB;EAC9C,QAAIkK,CAAC,GAAG,IAAR;;EAEA,QAAI,CAAClK,IAAL,EAAW;EACT,aAAO,IAAP;EACD;;EAED,QAAI,OAAO4M,CAAP,KAAa,QAAb,IAAyB,OAAOA,CAAP,KAAa,QAA1C,EAAoD;EAClDA,MAAAA,CAAC,GAAG,IAAI+I,SAAJ,CAAc/I,CAAd,EAAiB,KAAK3O,QAAL,CAAcR,IAA/B,CAAJ;EACD,KAT6C;;;EAY9CuC,IAAAA,IAAI,GAAGA,IAAI,CAAC9G,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;;EAEA,QAAI4c,KAAK,CAAC9V,IAAD,CAAT,EAAiB;EACf,aAAO8V,KAAK,CAAC9V,IAAD,CAAL,CAAYkK,CAAZ,MAAmB4L,KAAK,CAAC9V,IAAD,CAAL,CAAY4M,CAAZ,CAA1B;EACD;;EAED,WAAO,IAAP;EACD,GAnBD;EAoBD,CArBD;;EAuBA,IAAIoJ,IAAI,GAAGD,YAAX;;EAEA,IAAIE,YAAY,GAAG,SAAStB,UAAT,CAAoBgB,SAApB,EAA+B;EAChD,MAAIjgB,OAAO,GAAG;EACZoX,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiBxX,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KAVW;EAWZoT,IAAAA,QAAQ,EAAE,SAASA,QAAT,CAAkBvX,CAAlB,EAAqB;EAC7BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,GAAaA,KAApB;EACD,KApBW;EAqBZyc,IAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB5gB,CAAjB,EAAoB;EAC3BA,MAAAA,CAAC,GAAG6B,GAAG,CAACuC,OAAJ,CAAYpE,CAAZ,EAAe,IAAf,CAAJ;EACA,UAAImE,KAAK,GAAGtC,GAAG,CAACmC,QAAJ,CAAahE,CAAb,CAAZ;;EAEA,UAAImE,KAAK,KAAK,IAAd,EAAoB;EAClB,eAAO,IAAP;EACD;;EAED,aAAO,KAAKA,KAAL,KAAeA,KAAtB;EACD,KA9BW;EA+BZ0c,IAAAA,SAAS,EAAE,SAASA,SAAT,CAAmB5a,KAAnB,EAA0BC,GAA1B,EAA+B;EACxC,UAAI4a,WAAW,GAAGje,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,KAAtF;EACAoD,MAAAA,KAAK,GAAGpE,GAAG,CAACuC,OAAJ,CAAY6B,KAAZ,EAAmB,IAAnB,CAAR;EACAC,MAAAA,GAAG,GAAGrE,GAAG,CAACuC,OAAJ,CAAY8B,GAAZ,EAAiB,IAAjB,CAAN;EACA,UAAI6a,UAAU,GAAGlf,GAAG,CAACmC,QAAJ,CAAaiC,KAAb,CAAjB;;EAEA,UAAI8a,UAAU,KAAK,IAAnB,EAAyB;EACvB,eAAO,IAAP;EACD;;EAED,UAAIC,QAAQ,GAAGnf,GAAG,CAACmC,QAAJ,CAAakC,GAAb,CAAf;;EAEA,UAAI8a,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAO,IAAP;EACD;;EAED,UAAIF,WAAJ,EAAiB;EACf,eAAO,KAAKD,SAAL,CAAe5a,KAAf,EAAsBC,GAAtB,KAA8B,KAAK0a,OAAL,CAAa3a,KAAb,CAA9B,IAAqD,KAAK2a,OAAL,CAAa1a,GAAb,CAA5D;EACD;;EAED,aAAO6a,UAAU,GAAG,KAAK5c,KAAlB,IAA2B,KAAKA,KAAL,GAAa6c,QAA/C;EACD;EApDW,GAAd,CADgD;;EAwDhD/e,EAAAA,MAAM,CAAC8F,IAAP,CAAY3H,OAAZ,EAAqBS,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC4c,IAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBrD,OAAO,CAACqD,CAAD,CAAhC;EACD,GAFD;EAGD,CA3DD;;EA6DA,IAAIwd,OAAO,GAAGN,YAAd;;EAEA,IAAIO,YAAY,GAAG,SAAS7B,UAAT,CAAoBgB,SAApB,EAA+B;EAChD,MAAIjgB,OAAO,GAAG;EACZ8L,IAAAA,IAAI,EAAE,SAASA,IAAT,CAAcrE,IAAd,EAAoB;EACxB;EACA,UAAIhG,GAAG,CAACY,QAAJ,CAAaoF,IAAI,CAACsH,IAAlB,CAAJ,EAA6B;EAC3BA,QAAAA,IAAI,CAAC5K,GAAL,CAASsD,IAAI,CAACsH,IAAd;EACD,OAJuB;;;EAOxB,UAAItN,GAAG,CAACY,QAAJ,CAAaoF,IAAI,CAACiE,MAAlB,CAAJ,EAA+B;EAC7BA,QAAAA,MAAM,CAACvH,GAAP,CAAWsD,IAAI,CAACiE,MAAhB;EACD;EACF;EAXW,GAAd,CADgD;;EAehD7J,EAAAA,MAAM,CAAC8F,IAAP,CAAY3H,OAAZ,EAAqBS,OAArB,CAA6B,UAAU4C,CAAV,EAAa;EACxC4c,IAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBrD,OAAO,CAACqD,CAAD,CAAhC;EACD,GAFD;EAGD,CAlBD;;EAoBA,IAAIyI,IAAI,GAAGgV,YAAX;EAEA,IAAIta,SAAS,GAAGwB,MAAhB;;EAEA,IAAIiY,SAAS,GAAG,SAASA,SAAT,CAAmB7E,OAAnB,EAA4B1U,EAA5B,EAAgC;EAC9C,MAAI0G,OAAO,GAAG3K,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAD8C;;EAG9C,OAAKsB,KAAL,GAAa,IAAb,CAH8C;;EAK9C,OAAK2C,EAAL,GAAUkD,IAAI,CAAClD,EAAD,EAAKF,SAAL,CAAd,CAL8C;;EAO9C,OAAK2E,MAAL,GAAciC,OAAO,CAACjC,MAAR,IAAkB,IAAhC,CAP8C;;EAS9C,OAAKkC,OAAL,GAAeD,OAAO,CAAC0E,GAAR,IAAe1E,OAAO,CAACC,OAAtC,CAT8C;;EAW9C,OAAKyM,UAAL,GAAkB,CAAlB,CAX8C;;EAa9C,MAAI1M,OAAO,CAAC6O,SAAR,KAAsBtZ,SAA1B,EAAqC;EACnC,SAAKmX,UAAL,GAAkB1M,OAAO,CAAC6O,SAA1B;EACD,GAf6C;;;EAkB9C,OAAK3O,MAAL,GAAc,EAAd;;EAEA,MAAIF,OAAO,CAACL,KAAR,KAAkBpK,SAAtB,EAAiC;EAC/B,SAAK2K,MAAL,GAAcF,OAAO,CAACL,KAAtB;EACD,GAtB6C;;;EAyB9ClL,EAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;EAC/B;EACAC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,UAAI3c,MAAM,GAAG8C,KAAK,CAAC,IAAD,CAAlB,CADkB;;EAGlB,UAAIlB,IAAI,GAAG,IAAID,IAAJ,CAAS,KAAKjC,KAAd,EAAqBmC,iBAArB,MAA4C,CAAvD,CAHkB;;EAKlB,UAAIC,KAAK,GAAGF,IAAI,GAAG5B,MAAM,GAAG,EAA5B,CALkB;;EAOlB8B,MAAAA,KAAK,GAAGA,KAAK,GAAG,EAAR,GAAa,IAArB,CAPkB;EAQlB;;EAEA,UAAIpC,KAAK,GAAG,KAAKA,KAAL,GAAaoC,KAAzB;EACA,UAAIvG,CAAC,GAAG,IAAIoG,IAAJ,CAASjC,KAAT,CAAR;EACA,aAAOnE,CAAP;EACD;EAf8B,GAAjC,EAzB8C;;EA2C9CiC,EAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACvCC,IAAAA,GAAG,EAAE,SAASA,GAAT,GAAe;EAClB,aAAOxa,SAAP;EACD,KAHsC;EAIvCrC,IAAAA,GAAG,EAAE,SAASA,GAAT,CAAasC,GAAb,EAAkB;EACrBD,MAAAA,SAAS,GAAGC,GAAZ;EACA,aAAOA,GAAP;EACD;EAPsC,GAAzC,EA3C8C;;EAqD9C,MAAI5C,GAAG,GAAGzB,KAAK,CAAC,IAAD,EAAOgZ,OAAP,EAAgB1U,EAAhB,CAAf;EACA,OAAK3C,KAAL,GAAaF,GAAG,CAACE,KAAjB;EACD,CAvDD;;;EA0DAlC,MAAM,CAAC8F,IAAP,CAAY0U,SAAZ,EAAuB5b,OAAvB,CAA+B,UAAU4C,CAAV,EAAa;EAC1C4c,EAAAA,SAAS,CAACne,SAAV,CAAoBuB,CAApB,IAAyBgZ,SAAS,CAAChZ,CAAD,CAAlC;EACD,CAFD;;EAIA4c,SAAS,CAACne,SAAV,CAAoBoC,KAApB,GAA4B,YAAY;EACtC,SAAO,IAAI+b,SAAJ,CAAc,KAAKlc,KAAnB,EAA0B,KAAK2C,EAA/B,EAAmC;EACxCyE,IAAAA,MAAM,EAAE,KAAKA,MAD2B;EAExC8Q,IAAAA,SAAS,EAAE,KAAKnC,UAFwB;EAGxC/M,IAAAA,KAAK,EAAE,KAAKO;EAH4B,GAAnC,CAAP;EAKD,CAND;;;EASA2S,SAAS,CAACne,SAAV,CAAoBmf,WAApB,GAAkC,YAAY;EAC5C,SAAO,IAAIjb,IAAJ,CAAS,KAAKjC,KAAd,CAAP;EACD,CAFD;;;EAKAob,KAAK,CAACc,SAAD,CAAL;EACApS,GAAG,CAACoS,SAAD,CAAH;EACAK,IAAI,CAACL,SAAD,CAAJ;EACAY,OAAO,CAACZ,SAAD,CAAP;EACAnU,IAAI,CAACmU,SAAD,CAAJ;EACA,IAAIiB,SAAS,GAAGjB,SAAhB;;EAEA,IAAIkB,QAAQ,GAAG,SAASA,QAAT,CAAkB3M,CAAlB,EAAqB0C,CAArB,EAAwB;EACrC,MAAIrR,KAAK,GAAG,IAAIqb,SAAJ,CAAc,IAAd,CAAZ;EACA,MAAIpb,GAAG,GAAG,IAAIob,SAAJ,CAAc,IAAd,CAAV;EACArb,EAAAA,KAAK,GAAGA,KAAK,CAAC5G,IAAN,CAAWuV,CAAX,CAAR,CAHqC;;EAKrC,MAAI0C,CAAJ,EAAO;EACLpR,IAAAA,GAAG,GAAGA,GAAG,CAAC7G,IAAJ,CAASiY,CAAT,CAAN;EACD,GAFD,MAEO;EACLpR,IAAAA,GAAG,GAAGD,KAAK,CAACgI,GAAN,CAAU,EAAV,EAAc,SAAd,CAAN;EACD;;EAED,MAAIuT,SAAS,GAAGvb,KAAK,CAACoE,IAAN,EAAhB;EACA,MAAIoX,OAAO,GAAGvb,GAAG,CAACmE,IAAJ,EAAd;EACA,MAAIqX,GAAG,GAAGzf,MAAM,CAAC8F,IAAP,CAAY9B,KAAK,CAACW,SAAlB,EAA6B+a,MAA7B,CAAoC,UAAU7a,EAAV,EAAc;EAC1D,QAAIA,EAAE,CAACwL,OAAH,CAAW,GAAX,MAAoB,CAAC,CAAzB,EAA4B;EAC1B,aAAO,KAAP;EACD;;EAED,QAAIxU,CAAC,GAAG,IAAIwjB,SAAJ,CAAc,IAAd,EAAoBxa,EAApB,CAAR;EACA,QAAIuD,IAAI,GAAGvM,CAAC,CAACuM,IAAF,EAAX,CAN0D;;EAQ1D,QAAIA,IAAI,IAAImX,SAAR,IAAqBnX,IAAI,IAAIoX,OAAjC,EAA0C;EACxC;EACA,UAAIpX,IAAI,KAAKmX,SAAT,IAAsB1jB,CAAC,CAACsM,MAAF,KAAanE,KAAK,CAACmE,MAAN,EAAvC,EAAuD;EACrD,eAAO,KAAP;EACD;;EAED,UAAIC,IAAI,KAAKoX,OAAT,IAAoB3jB,CAAC,CAACsM,MAAF,KAAalE,GAAG,CAACkE,MAAJ,EAArC,EAAmD;EACjD,eAAO,KAAP;EACD;;EAED,aAAO,IAAP;EACD;;EAED,WAAO,KAAP;EACD,GAtBS,CAAV;EAuBA,SAAOsX,GAAP;EACD,CArCD;;EAuCA,IAAIE,UAAU,GAAGL,QAAjB;EAEA,IAAIM,QAAQ,GAAG,OAAf;;EAEA,IAAIC,MAAM,GAAG,SAAS3J,IAAT,CAAc3V,KAAd,EAAqBsE,EAArB,EAAyB0G,OAAzB,EAAkC;EAC7C,SAAO,IAAI8T,SAAJ,CAAc9e,KAAd,EAAqBsE,EAArB,EAAyB0G,OAAzB,CAAP;EACD,CAFD;;;EAKA,IAAIuU,QAAQ,GAAG,SAASA,QAAT,CAAkB1d,CAAlB,EAAqB;EAClC,MAAI8I,KAAK,GAAG9I,CAAC,CAACqJ,MAAF,IAAY,EAAxB;EACAzL,EAAAA,MAAM,CAAC8F,IAAP,CAAYoF,KAAZ,EAAmBtM,OAAnB,CAA2B,UAAU4C,CAAV,EAAa;EACtCY,IAAAA,CAAC,GAAGA,CAAC,CAACZ,CAAD,CAAD,CAAK0J,KAAK,CAAC1J,CAAD,CAAV,CAAJ;EACD,GAFD;EAGA,SAAOY,CAAP;EACD,CAND;;;EASAyd,MAAM,CAACjU,GAAP,GAAa,UAAU/G,EAAV,EAAc0G,OAAd,EAAuB;EAClC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAP;EACD,CAJD;;EAMAyd,MAAM,CAAC3U,KAAP,GAAe,UAAUrG,EAAV,EAAc0G,OAAd,EAAuB;EACpC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAACmI,OAAF,CAAU,KAAV,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAAC9T,QAAP,GAAkB,UAAUlH,EAAV,EAAc0G,OAAd,EAAuB;EACvC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC4J,GAAF,CAAM,CAAN,EAAS,KAAT,EAAgBzB,OAAhB,CAAwB,KAAxB,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAAC5T,SAAP,GAAmB,UAAUpH,EAAV,EAAc0G,OAAd,EAAuB;EACxC,MAAInJ,CAAC,GAAG,IAAIid,SAAJ,CAAc,IAAIlb,IAAJ,GAAWlC,OAAX,EAAd,EAAoC4C,EAApC,EAAwC0G,OAAxC,CAAR;EACAnJ,EAAAA,CAAC,GAAG0d,QAAQ,CAAC1d,CAAD,CAAZ;EACA,SAAOA,CAAC,CAAC8J,QAAF,CAAW,CAAX,EAAc,KAAd,EAAqB3B,OAArB,CAA6B,KAA7B,CAAP;EACD,CAJD;;EAMAsV,MAAM,CAACE,MAAP,GAAgB,UAAUnb,GAAV,EAAe;EAC7B5E,EAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAU4C,CAAV,EAAa;EACpC6d,IAAAA,SAAS,CAACpf,SAAV,CAAoBuB,CAApB,IAAyBoD,GAAG,CAACpD,CAAD,CAA5B;EACD,GAFD;EAGA,SAAO,IAAP;EACD,CALD;;;EAQAqe,MAAM,CAACP,QAAP,GAAkBK,UAAlB;EACAE,MAAM,CAACG,OAAP,GAAiBJ,QAAjB;;EAEAC,MAAM,CAACI,MAAP,GAAgBJ,MAAM,CAACE,MAAvB;EACA,IAAIG,GAAG,GAAGL,MAAV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvhIA;EACA;;EAGA,IAAMM,OAAO,GAAG,UAAhB;EACA,IAAMC,IAAI,GAAG,OAAb;EACA,IAAMC,MAAM,GAAG,SAAf;EACA,IAAMC,MAAM,GAAG,SAAf;EACA,IAAMC,GAAG,GAAG,YAAZ;EACA,IAAMC,GAAG,GAAG,UAAZ;EAEA,IAAMC,QAAQ,GAAG;;EAEf,yBAAuBJ,MAAM,GAAG,QAFjB;EAGfK,EAAAA,GAAG,EAAEL,MAAM,GAAG,QAHC;EAIf,kBAAgBA,MAAM,GAAG,QAJV;EAKf,kBAAgBA,MAAM,GAAG,QALV;EAMf,uBAAqBA,MAAM,GAAG,QANf;EAOf,gBAAcA,MAAM,GAAG,QAPR;EAQfM,EAAAA,OAAO,EAAEN,MAAM,GAAG,QARH;EASf,2BAAyBA,MAAM,GAAG,QATnB;EAUfO,EAAAA,GAAG,EAAEP,MAAM,GAAG,QAVC;EAWf,kCAAgCA,MAAM,GAAG,QAX1B;EAYfQ,EAAAA,IAAI,EAAER,MAAM,GAAG,QAZA;EAaf,oBAAkBA,MAAM,GAAG,QAbZ;EAcf,2BAAyBA,MAAM,GAAG,MAdnB;EAefS,EAAAA,GAAG,EAAET,MAAM,GAAG,MAfC;EAgBf,kCAAgCA,MAAM,GAAG,MAhB1B;EAiBfU,EAAAA,IAAI,EAAEV,MAAM,GAAG,MAjBA;EAkBf,yBAAuBA,MAAM,GAAG,MAlBjB;EAmBf,2BAAyBA,MAAM,GAAG,QAnBnB;;EAqBf,kCAAgCA,MAAM,GAAG,QArB1B;;EAuBf,oBAAkBA,MAAM,GAAG,QAvBZ;EAwBf,0BAAwBA,MAAM,GAAG,UAxBlB;EAyBfW,EAAAA,GAAG,EAAEX,MAAM,GAAG,UAzBC;EA0Bf,kBAAgBA,MAAM,GAAG,UA1BV;;EA6BfY,EAAAA,GAAG,EAAEX,MAAM,GAAG,UA7BC;EA8BfY,EAAAA,GAAG,EAAEZ,MAAM,GAAG,UA9BC;EA+Bf,6BAA2BA,MAAM,GAAG,UA/BrB;EAgCfa,EAAAA,GAAG,EAAEb,MAAM,GAAG,UAhCC;EAiCf,sBAAoBA,MAAM,GAAG,SAjCd;;EAmCf,uBAAqBA,MAAM,GAAG,SAnCf;EAoCf,yBAAuBA,MAAM,GAAG,SApCjB;EAqCf,yBAAuBA,MAAM,GAAG,UArCjB;;EAuCf,0BAAwBA,MAAM,GAAG,UAvClB;EAwCf,gCAA8BA,MAAM,GAAG,cAxCxB;EAyCfc,EAAAA,IAAI,EAAEd,MAAM,GAAG,cAzCA;EA0Cf,qBAAmBA,MAAM,GAAG,cA1Cb;EA2Cf,mBAAiBA,MAAM,GAAG,cA3CX;EA4Cf,+BAA6BA,MAAM,GAAG,OA5CvB;;EA8Cf,yBAAuBA,MAAM,GAAG,OA9CjB;EA+Cf,uBAAqBA,MAAM,GAAG,OA/Cf;EAiDf,sCAAoCC,GAAG,GAAG,UAjD3B;EAkDfc,EAAAA,IAAI,EAAEd,GAAG,GAAG,UAlDG;EAmDf,sCAAoCA,GAAG,GAAG,UAnD3B;EAoDfe,EAAAA,IAAI,EAAEf,GAAG,GAAG,UApDG;EAqDf,uBAAqBA,GAAG,GAAG,UArDZ;EAsDf,sCAAoCA,GAAG,GAAG,UAtD3B;EAuDfgB,EAAAA,IAAI,EAAEhB,GAAG,GAAG,UAvDG;EAwDf,sCAAoCA,GAAG,GAAG,UAxD3B;EAyDfiB,EAAAA,IAAI,EAAEjB,GAAG,GAAG,UAzDG;EA0Df,oBAAkBA,GAAG,GAAG,UA1DT;EA2Df,sCAAoCA,GAAG,GAAG,OA3D3B;EA4DfkB,EAAAA,IAAI,EAAElB,GAAG,GAAG,OA5DG;EA6Df,sCAAoCA,GAAG,GAAG,OA7D3B;EA8DfmB,EAAAA,IAAI,EAAEnB,GAAG,GAAG,OA9DG;EA+Df,oBAAkBA,GAAG,GAAG,OA/DT;EAgEf,8CAA4CA,GAAG,GAAG,OAhEnC;EAiEfoB,EAAAA,KAAK,EAAEpB,GAAG,GAAG,OAjEE;EAkEf,4BAA0BA,GAAG,GAAG,OAlEjB;EAmEf,6BAA2BA,GAAG,GAAG,WAnElB;EAoEfqB,EAAAA,IAAI,EAAErB,GAAG,GAAG,WApEG;EAqEf,6BAA2BA,GAAG,GAAG,WArElB;EAsEfsB,EAAAA,IAAI,EAAEtB,GAAG,GAAG,WAtEG;EAuEf,2BAAyBF,MAAM,GAAG,QAvEnB;EAwEfyB,EAAAA,GAAG,EAAEzB,MAAM,GAAG,QAxEC;EAyEf0B,EAAAA,OAAO,EAAE1B,MAAM,GAAG,QAzEH;;EA4Ef,2BAAyBF,OAAO,GAAG,SA5EpB;EA6Ef,kBAAgBA,OAAO,GAAG,SA7EX;EA8Ef6B,EAAAA,GAAG,EAAE7B,OAAO,GAAG,QA9EA;EA+Ef,2BAAyBA,OAAO,GAAG,SA/EpB;EAgFf8B,EAAAA,GAAG,EAAE9B,OAAO,GAAG,QAhFA;EAiFf,4BAA0BA,OAAO,GAAG,QAjFrB;EAkFf,mBAAiBA,OAAO,GAAG,QAlFZ;EAmFf+B,EAAAA,GAAG,EAAE/B,OAAO,GAAG,QAnFA;EAoFf,4BAA0BA,OAAO,GAAG,QApFrB;EAqFfgC,EAAAA,GAAG,EAAEhC,OAAO,GAAG,QArFA;EAsFf,4BAA0BA,OAAO,GAAG,SAtFrB;EAuFf,mBAAiBA,OAAO,GAAG,SAvFZ;EAwFfiC,EAAAA,GAAG,EAAEhC,IAAI,GAAG,SAxFG;EAyFf,4BAA0BD,OAAO,GAAG,SAzFrB;EA0FfkC,EAAAA,GAAG,EAAElC,OAAO,GAAG,SA1FA;EA2Ff,2BAAyBA,OAAO,GAAG,UA3FpB;EA4Ff,kBAAgBA,OAAO,GAAG,UA5FX;EA6FfmC,EAAAA,GAAG,EAAEnC,OAAO,GAAG,UA7FA;EA8Ff,2BAAyBA,OAAO,GAAG,UA9FpB;EA+FfoC,EAAAA,GAAG,EAAEpC,OAAO,GAAG,UA/FA;EAgGf,kBAAgBA,OAAO,GAAG,aAhGX;EAiGf,2BAAyBA,OAAO,GAAG,aAjGpB;EAkGfqC,EAAAA,GAAG,EAAErC,OAAO,GAAG,aAlGA;EAmGf,2BAAyBA,OAAO,GAAG,aAnGpB;EAoGfsC,EAAAA,GAAG,EAAEtC,OAAO,GAAG,aApGA;EAqGf,2BAAyBA,OAAO,GAAG,WArGpB;EAsGf,kBAAgBA,OAAO,GAAG,WAtGX;EAuGfuC,EAAAA,IAAI,EAAEvC,OAAO,GAAG,WAvGD;EAwGf,2BAAyBA,OAAO,GAAG,WAxGpB;EAyGfwC,EAAAA,IAAI,EAAExC,OAAO,GAAG,WAzGD;EA0Gf,4BAA0BK,GAAG,GAAG,UA1GjB;EA2Gf,mBAAiBA,GAAG,GAAG,UA3GR;EA4GfoC,EAAAA,GAAG,EAAEpC,GAAG,GAAG,UA5GI;EA6Gf,mBAAiBA,GAAG,GAAG,UA7GR;EA8Gf,iBAAeA,GAAG,GAAG,UA9GN;EA+Gf,gCAA8BL,OAAO,GAAG,UA/GzB;EAgHf,uBAAqBA,OAAO,GAAG,UAhHhB;EAiHf0C,EAAAA,GAAG,EAAE1C,OAAO,GAAG,UAjHA;EAkHf,gCAA8BA,OAAO,GAAG,UAlHzB;EAmHf2C,EAAAA,GAAG,EAAE3C,OAAO,GAAG,UAnHA;EAoHf,iBAAeA,OAAO,GAAG,WApHV;EAqHf4C,EAAAA,GAAG,EAAE5C,OAAO,GAAG,WArHA;EAsHf6C,EAAAA,QAAQ,EAAE7C,OAAO,GAAG,WAtHL;EAuHf8C,EAAAA,QAAQ,EAAE9C,OAAO,GAAG,WAvHL;EAwHf,oBAAkBA,OAAO,GAAG,WAxHb;EAyHf,oBAAkBA,OAAO,GAAG,cAzHb;;EA2Hf,sBAAoBA,OAAO,GAAG,cA3Hf;EA4Hf,iBAAeA,OAAO,GAAG,QA5HV;EA6Hf+C,EAAAA,GAAG,EAAE/C,OAAO,GAAG,QA7HA;EA8Hf,oBAAkBA,OAAO,GAAG,QA9Hb;EA+Hf,iCAA+B,oBA/HhB;EAgIfgD,EAAAA,IAAI,EAAE,oBAhIS;EAiIf,+BAA6B,oBAjId;EAkIfC,EAAAA,KAAK,EAAE,oBAlIQ;EAmIf,8BAA4BjD,OAAO,GAAG,SAnIvB;EAoIf,qBAAmBA,OAAO,GAAG,SApId;EAqIfkD,EAAAA,GAAG,EAAElD,OAAO,GAAG,SArIA;EAsIf,oBAAkBA,OAAO,GAAG,SAtIb;EAuIf,mBAAiBA,OAAO,GAAG,UAvIZ;EAwIfmD,EAAAA,GAAG,EAAEnD,OAAO,GAAG,UAxIA;EAyIf,0BAAwBA,OAAO,GAAG,UAzInB;EA0IfoD,EAAAA,IAAI,EAAEpD,OAAO,GAAG,UA1ID;EA2If,wBAAsBA,OAAO,GAAG,QA3IjB;EA4If,eAAaA,OAAO,GAAG,QA5IR;EA6If,wBAAsBA,OAAO,GAAG,QA7IjB;EA8If,gBAAcA,OAAO,GAAG,QA9IT;EA+If,kBAAgBA,OAAO,GAAG,QA/IX;;EAiJf,mBAAiBA,OAAO,GAAG,QAjJZ;EAkJf,mBAAiBA,OAAO,GAAG,QAlJZ;EAmJfqD,EAAAA,GAAG,EAAErD,OAAO,GAAG,QAnJA;EAoJf,oBAAkBA,OAAO,GAAG,QApJb;EAqJf,eAAaA,OAAO,GAAG,UArJR;;EAuJf,eAAaA,OAAO,GAAG,MAvJR;;EAyJf,yBAAuBA,OAAO,GAAG,cAzJlB;EA0Jf,gBAAcA,OAAO,GAAG,cA1JT;EA2JfsD,EAAAA,IAAI,EAAEtD,OAAO,GAAG,cA3JD;EA4Jf,uBAAqBA,OAAO,GAAG,cA5JhB;EA6JfuD,EAAAA,IAAI,EAAEvD,OAAO,GAAG,cA7JD;EA8Jf,kBAAgBA,OAAO,GAAG,YA9JX;EA+JfwD,EAAAA,GAAG,EAAExD,OAAO,GAAG,YA/JA;;EAkKfyD,EAAAA,GAAG,EAAExD,IAAI,GAAG,WAlKG;EAmKf,0BAAwBA,IAAI,GAAG,SAnKhB;EAoKf,iBAAeA,IAAI,GAAG,SApKP;EAqKf,eAAaA,IAAI,GAAG,SArKL;EAsKf,wBAAsBA,IAAI,GAAG,QAtKd;EAuKf,eAAaA,IAAI,GAAG,QAvKL;EAwKfyD,EAAAA,IAAI,EAAEzD,IAAI,GAAG,QAxKE;EAyKf,wBAAsBA,IAAI,GAAG,QAzKd;EA0Kf0D,EAAAA,IAAI,EAAE1D,IAAI,GAAG,QA1KE;EA2Kf2D,EAAAA,OAAO,EAAE3D,IAAI,GAAG,QA3KD;EA4Kf,4BAA0BA,IAAI,GAAG,SA5KlB;EA6Kf,mBAAiBA,IAAI,GAAG,SA7KT;EA8Kf4D,EAAAA,GAAG,EAAE5D,IAAI,GAAG,SA9KG;EA+Kf,yBAAuBA,IAAI,GAAG,SA/Kf;EAgLf,iBAAeA,IAAI,GAAG,SAhLP;EAiLf,oBAAkBA,IAAI,GAAG,SAjLV;EAkLf6D,EAAAA,GAAG,EAAE7D,IAAI,GAAG,SAlLG;EAmLf,qBAAmBA,IAAI,GAAG,SAnLX;EAoLf,yBAAuBA,IAAI,GAAG,UApLf;EAqLf8D,EAAAA,EAAE,EAAE9D,IAAI,GAAG,UArLI;EAsLf,kBAAgBA,IAAI,GAAG,UAtLR;EAuLf,mBAAiBA,IAAI,GAAG,QAvLT;EAwLf+D,EAAAA,IAAI,EAAE/D,IAAI,GAAG,QAxLE;EAyLf,eAAaA,IAAI,GAAG,MAzLL;EA0Lf,eAAaA,IAAI,GAAG,MA1LL;EA2Lf,kBAAgBA,IAAI,GAAG,SA3LR;EA4LfgE,EAAAA,IAAI,EAAEhE,IAAI,GAAG,SA5LE;EA6Lf,wBAAsBA,IAAI,GAAG,OA7Ld;EA8Lf,eAAaA,IAAI,GAAG,OA9LL;EA+LfiE,EAAAA,GAAG,EAAEjE,IAAI,GAAG,OA/LG;EAgMfkE,EAAAA,GAAG,EAAElE,IAAI,GAAG,OAhMG;EAiMf,oBAAkBA,IAAI,GAAG,WAjMV;EAkMfmE,EAAAA,GAAG,EAAEnE,IAAI,GAAG,WAlMG;EAmMf,6BAA2BA,IAAI,GAAG,SAnMnB;EAoMfoE,EAAAA,GAAG,EAAEpE,IAAI,GAAG,SApMG;EAqMf,oBAAkBA,IAAI,GAAG,SArMV;EAsMf,6BAA2BA,IAAI,GAAG,UAtMnB;EAuMfqE,EAAAA,IAAI,EAAErE,IAAI,GAAG,UAvME;EAwMf,0BAAwBA,IAAI,GAAG,WAxMhB;EAyMfsE,EAAAA,GAAG,EAAEtE,IAAI,GAAG,WAzMG;EA0Mf,0BAAwBA,IAAI,GAAG,WA1MhB;EA2Mf,iBAAeA,IAAI,GAAG,WA3MP;EA4MfuE,EAAAA,OAAO,EAAEvE,IAAI,GAAG,WA5MD;EA6Mf,sBAAoBA,IAAI,GAAG,aA7MZ;EA8MfwE,EAAAA,IAAI,EAAExE,IAAI,GAAG,aA9ME;EA+Mf,mBAAiBA,IAAI,GAAG,cA/MT;EAgNfyE,EAAAA,GAAG,EAAEzE,IAAI,GAAG,cAhNG;EAiNf,oBAAkBA,IAAI,GAAG,WAjNV;EAkNf0E,EAAAA,GAAG,EAAE1E,IAAI,GAAG,WAlNG;EAmNf,yBAAuBA,IAAI,GAAG,OAnNf;EAoNf,gBAAcA,IAAI,GAAG,OApNN;EAqNf2E,EAAAA,GAAG,EAAE3E,IAAI,GAAG,OArNG;EAsNf,iBAAeA,IAAI,GAAG,OAtNP;EAuNf,qBAAmBA,IAAI,GAAG,WAvNX;EAwNf4E,EAAAA,GAAG,EAAE5E,IAAI,GAAG,WAxNG;EAyNf,sBAAoBA,IAAI,GAAG,aAzNZ;EA0Nf6E,EAAAA,IAAI,EAAE7E,IAAI,GAAG,aA1NE;;EA6Nf,mBAAiB,iBA7NF;EA8Nf8E,EAAAA,GAAG,EAAE,iBA9NU;EA+Nf,oBAAkB,kBA/NH;EAgOfC,EAAAA,GAAG,EAAE,kBAhOU;;EAmOf,2BAAyB3E,GAAG,GAAG,WAnOhB;EAoOf4E,EAAAA,GAAG,EAAE5E,GAAG,GAAG,WApOI;EAqOf,yBAAuBA,GAAG,GAAG,QArOd;EAsOf6E,EAAAA,GAAG,EAAE7E,GAAG,GAAG,QAtOI;EAuOf,iBAAeA,GAAG,GAAG,QAvON;EAwOf,4BAA0BA,GAAG,GAAG,MAxOjB;EAyOf8E,EAAAA,IAAI,EAAE9E,GAAG,GAAG,MAzOG;EA0Of,2BAAyBA,GAAG,GAAG,cA1OhB;EA2Of+E,EAAAA,GAAG,EAAE/E,GAAG,GAAG;EA3OI,CAAjB;;EA+OA,IAAIgF,IAAI,GAAGnG,WAAS,GAAG1a,SAAvB;EACA,IAAI8gB,MAAM,GAAGzlB,MAAM,CAAC8F,IAAP,CAAY0f,IAAZ,EAAkBje,MAAlB,CAAyB,UAACC,CAAD,EAAIhG,CAAJ,EAAU;EAC9CgG,EAAAA,CAAC,CAAChG,CAAD,CAAD,GAAOA,CAAP;EACA,SAAOgG,CAAP;EACD,CAHY,EAGV,EAHU,CAAb;;EAIA,cAAc,GAAGxH,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkB8T,QAAlB,EAA4BgF,MAA5B,CAAjB;;EChQA,WAAc,GAAG,CACf,SADe,EAGf,QAHe,EAIf,QAJe,EAKf,QALe,EAOf,UAPe,EAQf,SARe,EASf,SATe,EAUf,YAVe,EAYf,KAZe,EAaf,KAbe,EAcf,eAde,EAef,eAfe,CAAjB;;ECAA,aAAc,GAAG,CACf,WADe,EAEf,SAFe,EAGf,KAHe,EAIf,MAJe,EAKf,QALe,EAMf,SANe,EAOf,MAPe,EAQf,OARe,EASf,aATe,EAUf,cAVe,EAWf,QAXe,EAYf,SAZe,EAaf,OAbe,EAcf,QAde,EAef,SAfe,EAgBf,MAhBe,EAiBf,OAjBe,EAkBf,MAlBe,EAmBf,OAnBe,CAAjB;;ECAA,YAAc,GAAG,CACf,iBADe,EAEf,gBAFe,EAGf,aAHe,EAIf,aAJe,EAKf,eALe,EAMf,eANe,EAOf,cAPe,EAQf,YARe,EASf,YATe,EAUf,eAVe,EAWf,WAXe,EAYf,eAZe,EAaf,iBAbe,EAcf,gBAde,EAef,yBAfe,EAgBf,kBAhBe,EAiBf,kBAjBe,EAkBf,eAlBe,EAmBf,WAnBe,EAoBf,iBApBe,EAqBf,kBArBe,EAsBf,kBAtBe,EAuBf,kBAvBe,EAwBf,YAxBe,EAyBf,YAzBe,EA0Bf,sBA1Be,EA2Bf,qBA3Be,EA4Bf,eA5Be,EA6Bf,WA7Be,EA8Bf,kBA9Be,EA+Bf,kBA/Be,EAgCf,gBAhCe,EAiCf,mBAjCe,EAkCf,oBAlCe,EAmCf,oBAnCe,EAoCf,sBApCe,EAqCf,gBArCe,EAsCf,iBAtCe,EAuCf,iBAvCe,EAwCf,oBAxCe,EAyCf,gBAzCe,EA0Cf,YA1Ce,EA2Cf,cA3Ce,EA4Cf,cA5Ce,EA6Cf,qBA7Ce,EA8Cf,MA9Ce;;EAiDf,UAjDe,EAkDf,wBAlDe,EAmDf,mBAnDe,EAoDf,oBApDe,EAqDf,eArDe,EAsDf,oCAtDe,EAuDf,gCAvDe;EA0Df,SA1De;EA4Df,QA5De,EA6Df,UA7De,EA8Df,aA9De,EA+Df,SA/De,EAgEf,wBAhEe,EAiEf,SAjEe,EAkEf,gBAlEe,EAmEf,YAnEe,EAoEf,SApEe,EAqEf,kBArEe,EAsEf,aAtEe,EAuEf,cAvEe,EAwEf,aAxEe,EAyEf,cAzEe,EA0Ef,wBA1Ee,EA2Ef,uBA3Ee,EA4Ef,cA5Ee,EA6Ef,cA7Ee,EA8Ef,OA9Ee,EA+Ef,YA/Ee,EAgFf,cAhFe,EAiFf,cAjFe;EAmFf,eAnFe,EAoFf,aApFe,EAqFf,iBArFe,EAsFf,aAtFe,EAuFf,eAvFe,EAwFf,QAxFe,EAyFf,eAzFe,EA0Ff,eA1Fe,EA2Ff,sBA3Fe,EA4Ff,wBA5Fe,EA6Ff,iBA7Fe,EA8Ff,wBA9Fe,EA+Ff,eA/Fe,EAgGf,WAhGe,EAiGf,YAjGe,EAkGf,aAlGe,EAmGf,aAnGe,EAoGf,gBApGe,EAqGf,gBArGe,EAsGf,QAtGe;EAwGf,YAxGe,EAyGf,YAzGe,EA0Gf,OA1Ge,EA2Gf,UA3Ge,EA4Gf,aA5Ge,EA6Gf,YA7Ge,EA8Gf,SA9Ge,EA+Gf,WA/Ge,EAgHf,cAhHe,EAiHf,YAjHe,EAkHf,QAlHe,EAmHf,gBAnHe,EAoHf,eApHe,EAqHf,UArHe,EAsHf,UAtHe;EAwHf,gBAxHe,EAyHf,gBAzHe,EA0Hf,aA1He,EA2Hf,YA3He,EA4Hf,aA5He,EA6Hf,SA7He,EA8Hf,aA9He,EA+Hf,UA/He,EAgIf,uBAhIe,EAiIf,QAjIe,EAkIf,eAlIe,EAmIf,gBAnIe,EAoIf,OApIe,EAqIf,gBArIe,EAsIf,kBAtIe,EAuIf,OAvIe,EAwIf,mBAxIe,EAyIf,cAzIe,EA0If,kBA1Ie,EA2If,MA3Ie,EA4If,mBA5Ie,EA6If,iBA7Ie;EA+If,kBA/Ie,EAgJf,QAhJe,CAAjB;;ECAA,SAAc,GAAG,CACf,MADe,EAEf,UAFe,EAGf,KAHe,EAIf,SAJe,EAKf,SALe,EAMf,SANe,EAOf,WAPe,EAQf,OARe,EASf,gBATe,EAUf,WAVe,EAWf,YAXe,EAYf,UAZe,EAaf,KAbe,EAcf,QAde,EAef,QAfe,EAgBf,SAhBe,EAiBf,UAjBe,CAAjB;;ECAA,IAAIC,GAAG,GAAG,EAAV;EAGA,IAAM9f,MAAI,GAAG,CACX,CAACxH,OAAD,EAAqB,OAArB,CADW,EAEX,CAACC,SAAD,EAAyB,WAAzB,CAFW,EAGX,CAACC,QAAD,EAAwB,UAAxB,CAHW,EAIX,CAACC,KAAD,EAAqB,OAArB,CAJW,EAKX,CAACyB,MAAM,CAAC8F,IAAP,CAAYnB,UAAZ,CAAD,EAAyB,WAAzB,CALW,CAAb;AAOAiB,QAAI,CAAChH,OAAL,CAAa,UAAA+T,CAAC,EAAI;EAChB,OAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqR,CAAC,CAAC,CAAD,CAAD,CAAK9R,MAAzB,EAAiCS,CAAC,EAAlC,EAAsC;EACpCokB,IAAAA,GAAG,CAAC/S,CAAC,CAAC,CAAD,CAAD,CAAKrR,CAAL,CAAD,CAAH,GAAeqR,CAAC,CAAC,CAAD,CAAhB;EACD;EACF,CAJD;EAMA,SAAc,GAAG+S,GAAjB;;EChBA,IAAM9jB,WAAS,GAAG,SAAZA,SAAY,CAASpF,GAAT,EAAc;EAC9BA,EAAAA,GAAG,GAAGA,GAAG,CAAC6F,KAAJ,EAAN;;EAEA,MAAI,CAAC7F,GAAG,CAACmpB,OAAT,EAAkB;EAChB7gB,IAAAA,OAAO,CAACC,IAAR,CAAa,gFAAb;EACD,GAFD,MAEO;;EAEL,QAAI7I,GAAG,GAAGM,GAAG,CAACmpB,OAAJ,EAAV;EACAzpB,IAAAA,GAAG,CAAC0pB,QAAJ;EACA1pB,IAAAA,GAAG,CAACuF,UAAJ;EACD,GAV6B;;;EAY9BjF,EAAAA,GAAG,CAACqpB,OAAJ,GAAcC,MAAd;EACA,SAAOtpB,GAAP;EACD,CAdD;;EAeA,gBAAc,GAAGoF,WAAjB;;ECfA,IAAMmkB,UAAU,GAAG;EACjB7d,EAAAA,MAAM,EAAE,IADS;EAEjBC,EAAAA,MAAM,EAAE,IAFS;EAGjBC,EAAAA,IAAI,EAAE,IAHW;EAIjBC,EAAAA,GAAG,EAAE,IAJY;EAKjBC,EAAAA,IAAI,EAAE,IALW;EAMjB5L,EAAAA,KAAK,EAAE,IANU;EAOjBK,EAAAA,MAAM,EAAE,IAPS;EAQjB+R,EAAAA,OAAO,EAAE,IARQ;EASjBhP,EAAAA,IAAI,EAAE;EATW,CAAnB;;EAaA,IAAMkmB,UAAU,GAAG,SAAbA,UAAa,CAAUxpB,GAAV,EAAe;EAChC,MAAIic,MAAM,GAAG,EAAb;EACA,MAAI5c,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,aAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,KAAhB,EAAuB;EACrB,WAAO0c,MAAP;EACD;;EACD5c,EAAAA,CAAC,CAACY,KAAF,CAAQ,qBAAR,EAA+BmC,OAA/B,CAAuC,UAACqnB,EAAD,EAAQ;EAC7C,QAAI/pB,GAAG,GAAG+pB,EAAE,CAACxpB,KAAH,CAAS,WAAT,EAAsBypB,IAAtB,CAA2B,QAA3B,CAAV;EACAhqB,IAAAA,GAAG,GAAGiO,UAAU,CAACjO,GAAD,CAAhB;;EACA,QAAIA,GAAG,IAAI,OAAOA,GAAP,KAAe,QAA1B,EAAoC;EAClC,UAAIuM,IAAI,GAAGwd,EAAE,CAACxpB,KAAH,CAAS,WAAT,EAAsBypB,IAAtB,CAA2B,QAA3B,CAAX;EACAzd,MAAAA,IAAI,GAAGA,IAAI,CAAC9G,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;;EACA,UAAI8G,IAAI,IAAIsd,UAAU,CAACpe,cAAX,CAA0Bc,IAA1B,CAAZ,EAA6C;EAC3CgQ,QAAAA,MAAM,CAAChQ,IAAD,CAAN,GAAevM,GAAf;EACD;EACF;EACF,GAVD,EANgC;;EAkBhC,MAAIL,CAAC,CAAC0B,GAAF,CAAM,eAAN,MAA2B,IAA/B,EAAqC;EACnCyC,IAAAA,MAAM,CAAC8F,IAAP,CAAY2S,MAAZ,EAAoB7Z,OAApB,CAA4B,UAAC4C,CAAD;EAAA,aAAQiX,MAAM,CAACjX,CAAD,CAAN,IAAa,CAAC,CAAtB;EAAA,KAA5B;EACD,GApB+B;;;EAsBhChF,EAAAA,GAAG,CAACspB,MAAJ,CAAW,YAAX;EACA,SAAOrN,MAAP;EACD,CAxBD;;EAyBA,YAAc,GAAGuN,UAAjB;;ECpCA,IAAMG,SAAS,GAAG;EAChBC,EAAAA,QAAQ,EAAE,QADM;;EAEhB5K,EAAAA,SAAS,EAAE,QAFK;EAGhBD,EAAAA,OAAO,EAAE,QAHO;EAIhBE,EAAAA,IAAI,EAAE,SAJU;EAKhBE,EAAAA,SAAS,EAAE,QALK;EAMhB0K,EAAAA,SAAS,EAAE,SANK;EAOhBzK,EAAAA,OAAO,EAAE,QAPO;EAQhB0K,EAAAA,UAAU,EAAE,QARI;EAShBxK,EAAAA,KAAK,EAAE,QATS;EAUhBC,EAAAA,QAAQ,EAAE;EAVM,CAAlB;;EAaA,IAAMwK,QAAQ,GAAG,SAAXA,QAAW,CAAU1qB,CAAV,EAAauG,CAAb,EAAgB;EAC/B,MAAIgG,IAAI,GAAGvM,CAAC,CAACY,KAAF,CAAQ,YAAR,EAAsBypB,IAAtB,CAA2B,SAA3B,CAAX;EAEA,MAAIlqB,IAAI,GAAGH,CAAC,CAACY,KAAF,CAAQ,2BAAR,CAAX;EACA,MAAI+pB,IAAI,GAAGxqB,IAAI,CAACkqB,IAAL,CAAU,SAAV,CAAX;;EACA,MAAIlqB,IAAI,CAACuB,GAAL,CAAS,MAAT,CAAJ,EAAsB;EACpBipB,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIxqB,IAAI,CAACuB,GAAL,CAAS,SAAT,CAAJ,EAAyB;EACvBipB,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIC,MAAM,GAAG5qB,CAAC,CAAC0B,GAAF,CAAM,IAAN,CAAb,CAX+B;;EAa/B6E,EAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOA,IAAP,CAAJ;EACAhG,EAAAA,CAAC,GAAGA,CAAC,CAACmI,OAAF,CAAU,MAAV,CAAJ;;EACA,MAAIkc,MAAJ,EAAY;EACVrkB,IAAAA,CAAC,GAAGA,CAAC,CAAC8J,QAAF,CAAWsa,IAAX,EAAiB,SAAjB,CAAJ;EACD,GAFD,MAEO;EACLpkB,IAAAA,CAAC,GAAGA,CAAC,CAAC4J,GAAF,CAAMwa,IAAN,EAAY,SAAZ,CAAJ;EACD;;EACD,SAAOpkB,CAAP;EACD,CArBD;;EAuBA,IAAMiI,WAAS,GAAG,SAAZA,SAAY,CAAU7N,GAAV,EAAekqB,OAAf,EAAwB;EACxC,MAAItpB,IAAI,GAAGZ,GAAG,CAACC,KAAJ,CAAU,4BAAV,CAAX;;EACA,MAAIW,IAAI,CAACrB,KAAT,EAAgB;EACdS,IAAAA,GAAG,CAACspB,MAAJ,CAAW1oB,IAAX;EACD,GAJuC;;;EAMxCA,EAAAA,IAAI,GAAGA,IAAI,CAACH,GAAL,CAAS,0BAAT,CAAP;EACAG,EAAAA,IAAI,GAAGA,IAAI,CAACH,GAAL,CAAS,YAAT,CAAP;EACA,MAAImF,CAAC,GAAGid,WAAS,CAACzT,GAAV,CAAc8a,OAAO,CAAChgB,QAAtB,CAAR;EACA,MAAIkF,GAAG,GAAGxJ,CAAC,CAACC,KAAF,EAAV,CATwC;;EAYxC,MAAIskB,OAAO,GAAGvpB,IAAI,CAAC8oB,IAAL,CAAU,SAAV,CAAd;;EACA,MAAIC,SAAS,CAACxe,cAAV,CAAyBgf,OAAzB,CAAJ,EAAuC;EACrC,WAAOR,SAAS,CAACQ,OAAD,CAAhB;EACD,GAfuC;;;EAkBxC,MAAI9qB,CAAC,GAAGuB,IAAI,CAACX,KAAL,CAAW,4BAAX,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACXF,IAAAA,CAAC,GAAGA,CAAC,CAACoB,GAAF,CAAM,QAAN,CAAJ;EACAmF,IAAAA,CAAC,GAAGA,CAAC,CAACgG,IAAF,CAAOvM,CAAC,CAACqqB,IAAF,CAAO,SAAP,CAAP,CAAJ;;EACA,QAAI9jB,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,aAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;EACF,GAzBuC;;;EA4BxCvB,EAAAA,CAAC,GAAGuB,IAAI,CAACX,KAAL,CAAW,qDAAX,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACXqG,IAAAA,CAAC,GAAGmkB,QAAQ,CAAC1qB,CAAD,EAAIuG,CAAJ,CAAZ;;EACA,QAAIA,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,aAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;EACF,GAlCuC;;;EAoCxC,MAAIsD,GAAG,GAAGtD,IAAI,CAAC8oB,IAAL,CAAU,SAAV,CAAV;EACA9jB,EAAAA,CAAC,GAAGA,CAAC,CAAChF,IAAF,CAAOsD,GAAP,CAAJ;;EACA,MAAI0B,CAAC,CAAC0K,OAAF,MAAe,CAAC1K,CAAC,CAACuc,OAAF,CAAU/S,GAAV,CAApB,EAAoC;EAClC,WAAOxJ,CAAC,CAAChF,IAAF,EAAP;EACD;;EACD,SAAO,IAAP;EACD,CA1CD;;EA2CA,WAAc,GAAGiN,WAAjB;;ECjFA;EACA,IAAMuc,aAAa,GAAG,SAAhBA,aAAgB,CAASpqB,GAAT,EAAc;EAClC,MAAIqqB,GAAG,GAAG,IAAV;;EACA,MAAIrqB,GAAG,CAACe,GAAJ,CAAQ,wBAAR,CAAJ,EAAuC;EACrCspB,IAAAA,GAAG,GAAG,MAAN;EACD;;EACD,MAAIrqB,GAAG,CAACe,GAAJ,CAAQ,wBAAR,CAAJ,EAAuC;EACrCspB,IAAAA,GAAG,GAAG,MAAN;EACD;;EACD,MAAIrqB,GAAG,CAACe,GAAJ,CAAQ,iBAAR,CAAJ,EAAgC;EAC9BspB,IAAAA,GAAG,GAAG,MAAN;EACD,GAViC;;;EAYlCrqB,EAAAA,GAAG,CAACspB,MAAJ,CAAW,6CAAX;EACA,SAAOe,GAAP;EACD,CAdD;;EAeA,eAAc,GAAGD,aAAjB;;ECdA,IAAM9f,UAAQ,GAAG,oBAAjB;EACA,IAAMC,UAAQ,GAAG,aAAjB;EACA,IAAMC,WAAS,GAAG,oBAAlB;EACA,IAAMC,WAAS,GAAG,oBAAlB;;EAEA,IAAMC,QAAM,GAAG,SAATA,MAAS,CAAShL,GAAT,EAAc;EAC3BA,EAAAA,GAAG,GAAG6J,MAAM,CAAC7J,GAAD,CAAZ;;EACA,MAAIA,GAAG,GAAG,CAAC,EAAP,IAAaA,GAAG,GAAG,EAAvB,EAA2B;EACzBA,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAC,CAAb,CADyB;;EAEzBA,IAAAA,GAAG,GAAG,CAACA,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAjB,IAAuBA,GAA7B,CAFyB;;EAGzB,WAAO,YAAYA,GAAnB;EACD;;EACD,SAAO,IAAP;EACD,CARD;;EAUA,IAAMiL,aAAW,GAAG,SAAdA,WAAc,CAAStC,EAAT,EAAa;;EAE/B,MAAIhJ,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASqK,UAAT,CAAR;;EACA,MAAIjL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAL8B;;;EAO/BA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASuK,WAAT,CAAJ;;EACA,MAAInL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD,GAV8B;;;EAY/BA,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASwK,WAAT,CAAJ;;EACA,MAAIpL,CAAC,KAAK,IAAV,EAAgB;EACd,QAAIK,GAAG,GAAG6J,MAAM,CAAClK,CAAC,CAAC,CAAD,CAAF,CAAN,GAAe,CAAC,CAA1B;EACA,WAAOqL,QAAM,CAAChL,GAAD,CAAb;EACD,GAhB8B;;;EAkB/BL,EAAAA,CAAC,GAAGgJ,EAAE,CAACpI,KAAH,CAASsK,UAAT,CAAJ;;EACA,MAAIlL,CAAC,KAAK,IAAV,EAAgB;EACd,WAAOqL,QAAM,CAACrL,CAAC,CAAC,CAAD,CAAF,CAAb;EACD;;EACD,SAAO,IAAP;EACD,CAvBD;;EAyBA,IAAMirB,aAAa,GAAG,SAAhBA,aAAgB,CAAStqB,GAAT,EAAc;EAClC,MAAIX,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,YAAV,CAAR,CADkC;;EAGlCZ,EAAAA,CAAC,GAAGA,CAAC,CAACiqB,MAAF,CAAS,qBAAT,CAAJ;EACA,MAAIplB,GAAG,GAAG7E,CAAC,CAACqqB,IAAF,CAAO,SAAP,CAAV,CAJkC;;EAOlC1pB,EAAAA,GAAG,CAACspB,MAAJ,CAAW,YAAX,EAPkC;;EAUlC,MAAIrF,UAAQ,CAAC9Y,cAAT,CAAwBjH,GAAxB,CAAJ,EAAkC;EAChC,WAAO+f,UAAQ,CAAC/f,GAAD,CAAf;EACD;;EACD,MAAImE,EAAE,GAAGsC,aAAW,CAACzG,GAAD,CAApB;;EACA,MAAImE,EAAJ,EAAQ;EACN,WAAOA,EAAP;EACD;;EAED,SAAO,IAAP;EACD,CAnBD;;EAoBA,eAAc,GAAGiiB,aAAjB;;MC5DMC;EACJ,gBAAYxmB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAChC,SAAKje,IAAL,GAAYA,IAAI,IAAI,KAApB;EACAie,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,QAAIxb,KAAK,GAAG,EAAZ;;EACA,QAAIwb,OAAO,CAACxb,KAAZ,EAAmB;EACjBA,MAAAA,KAAK,GAAG;EACNlO,QAAAA,IAAI,EAAE0pB,OAAO,CAACxb,KAAR,CAAclO,IAAd,EADA;EAENN,QAAAA,KAAK,EAAEgqB,OAAO,CAACxb,KAAR,CAAcxO,KAAd,EAFD;EAGNoD,QAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHA,OAAR;EAKD,KAV+B;;;EAYhC,QAAI/B,CAAC,GAAGshB,WAAS,CAAC9e,KAAD,EAAQmmB,OAAO,CAAChgB,QAAhB,EAA0B;EAAEwE,MAAAA,KAAK,EAAEA;EAAT,KAA1B,CAAjB,CAZgC;;EAehC,QAAInN,CAAC,CAAC+O,OAAF,EAAJ,EAAiB;EACf/O,MAAAA,CAAC,GAAGA,CAAC,CAACwM,OAAF,CAAU,KAAK9B,IAAf,CAAJ;EACD;;EACDzI,IAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC;EAC/B8H,MAAAA,UAAU,EAAE,KADmB;EAE/BC,MAAAA,QAAQ,EAAE,IAFqB;EAG/BnQ,MAAAA,KAAK,EAAE/Y;EAHwB,KAAjC;EAKAiC,IAAAA,MAAM,CAACkf,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACrC8H,MAAAA,UAAU,EAAE,KADyB;EAErCC,MAAAA,QAAQ,EAAE,IAF2B;EAGrCnQ,MAAAA,KAAK,EAAE4P;EAH8B,KAAvC;EAKD;;;;;8BAEO;EACN,UAAI3oB,CAAC,GAAG,IAAIgpB,IAAJ,CAAS,KAAKhpB,CAAd,EAAiB,KAAK0K,IAAtB,EAA4B,KAAKie,OAAjC,CAAR;EACA,aAAO3oB,CAAP;EACD;;;4BACK;EACJ+G,MAAAA,OAAO,CAACgV,GAAR,CAAY,IAAZ;EACA,WAAK/b,CAAL,CAAO+b,GAAP;EACAhV,MAAAA,OAAO,CAACgV,GAAR,CAAY,IAAZ;EACA,aAAO,IAAP;EACD;;;mCACoB;EAAA;;EAAA,UAAVlV,GAAU,uEAAJ,EAAI;EACnB5E,MAAAA,MAAM,CAAC8F,IAAP,CAAYlB,GAAZ,EAAiBhG,OAAjB,CAAyB,UAAC4C,CAAD,EAAO;EAC9B,QAAA,KAAI,CAACzD,CAAL,GAAS,KAAI,CAACA,CAAL,CAAOiO,GAAP,CAAWpH,GAAG,CAACpD,CAAD,CAAd,EAAmBA,CAAnB,CAAT;EACD,OAFD;EAGA,aAAO,IAAP;EACD;;;gCACSd,KAAK;EACb,UAAIA,GAAJ,EAAS;EACP,aAAK3C,CAAL,GAAS,KAAKA,CAAL,CAAOX,IAAP,CAAYsD,GAAZ,CAAT;EACD,OAFD,MAEO;EACL,aAAK3C,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAf,CAAT,CADK;EAEN;;EACD,aAAO,IAAP;EACD;;;6BACMgG,KAAK;EACV,aAAO,KAAKxS,CAAL,CAAOyI,MAAP,CAAc+J,GAAd,CAAP;EACD;;;8BACO;EACN,WAAKxS,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;4BACK;EACJ,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAO6W,KAAP,CAAa,KAAKnM,IAAlB,CAAT;EACA,aAAO,IAAP;EACD;;;;+BAEQ;EACP,WAAK1K,CAAL,GAASshB,WAAS,CAACzT,GAAV,CAAc,KAAK8a,OAAL,CAAahgB,QAA3B,EAAqC;EAAEwE,QAAAA,KAAK,EAAE,KAAKwb,OAAL,CAAaxb;EAAtB,OAArC,CAAT,CADO;;EAEP,aAAO,IAAP;EACD;;;;8BAEO;EACN,WAAKnN,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,KAAKvD,IAAnB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;6BAEM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,KAAKvD,IAAnB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;6BAEM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,KAAKpU,IAArB,CAAT;EACA,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOwM,OAAP,CAAe,KAAK9B,IAApB,CAAT;EACA,aAAO,IAAP;EACD;;;;;;EAEH,UAAc,GAAGse,IAAjB;;MCzFMG;;;;;EACJ,eAAY3mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,8BAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,UAAKje,IAAL,GAAY,KAAZ;EAFgC;EAGjC;;;IAJese;;MAMZI;;;;;EACJ,iBAAY5mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,OAAZ;EAFgC;EAGjC;;;IAJiBse;;MAMdK;;;;;EACJ,mBAAY7mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,SAAZ;EAFgC;EAGjC;;;IAJmBse;;MAMhB9nB;;;;;EACJ,gBAAYsB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,MAAZ;EAFgC;EAGjC;;;IAJgBse;;MAMbM;;;;;EACJ,mBAAY9mB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,MAAZ,CAFgC;;EAIhC,QAAI,OAAOlI,KAAP,KAAiB,QAArB,EAA+B;EAC7B,aAAKxC,CAAL,GAASshB,WAAS,CAACqH,OAAO,CAACxb,KAAT,EAAgBwb,OAAO,CAAChgB,QAAxB,CAAlB;EACA,aAAK3I,CAAL,GAAS,OAAKA,CAAL,CAAOsK,GAAP,CAAW9H,KAAX,CAAT,CAF6B;;EAI7B,UAAI,OAAKxC,CAAL,CAAOuX,QAAP,CAAgBoR,OAAO,CAACxb,KAAxB,CAAJ,EAAoC;EAClC,eAAKnN,CAAL,GAAS,OAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACD;EACF,KAPD,MAOO;EACL,aAAKjO,CAAL,GAASwC,KAAT;EACD;;EACD,WAAK+mB,OAAL,GAAe,OAAKvpB,CAAL,CAAOyP,OAAP,EAAf;EAdgC;EAejC;;;;8BACO;;EAEN,aAAO,IAAI6Z,OAAJ,CAAY,KAAKtpB,CAAjB,EAAoB,KAAK0K,IAAzB,EAA+B,KAAKie,OAApC,CAAP;EACD;;;4BACK;;EAEJ,WAAK3oB,CAAL,GAAS,KAAKA,CAAL,CAAO6W,KAAP,CAAa,KAAb,CAAT;EACA,aAAO,IAAP;EACD;;;6BACM;EACL,WAAK7W,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACA,WAAKjO,CAAL,GAAS,KAAKA,CAAL,CAAOsK,GAAP,CAAW,KAAKif,OAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;6BACM;EACL,WAAKvpB,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,MAAhB,CAAT;EACA,WAAK9e,CAAL,GAAS,KAAKA,CAAL,CAAOsK,GAAP,CAAW,KAAKif,OAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;;IAnCmBP;;;MAsChBQ;;;;;EACJ,wBAAYhnB,KAAZ,EAAmBkI,IAAnB,EAAyBie,OAAzB,EAAkC;EAAA;;EAAA;;EAChC,gCAAMnmB,KAAN,EAAakI,IAAb,EAAmBie,OAAnB;EACA,WAAKje,IAAL,GAAY,KAAZ;EAFgC;EAGjC;;;;6BACM;EACL,WAAK1K,CAAL,GAAS,KAAKA,CAAL,CAAOiO,GAAP,CAAW,CAAX,EAAc,MAAd,CAAT;EACA,aAAO,IAAP;EACD;;;6BACM;EACL,WAAKjO,CAAL,GAAS,KAAKA,CAAL,CAAO8e,KAAP,CAAa,CAAb,EAAgB,MAAhB,CAAT;EACA,aAAO,IAAP;EACD;;;;IAZwBkK;;EAe3B,UAAc,GAAG;EACfA,EAAAA,IAAI,EAAEA,MADS;EAEfG,EAAAA,GAAG,EAAEA,GAFU;EAGfC,EAAAA,KAAK,EAAEA,KAHQ;EAIfC,EAAAA,OAAO,EAAEA,OAJM;EAKfnoB,EAAAA,IAAI,EAAEA,IALS;EAMfooB,EAAAA,OAAO,EAAEA,OANM;EAOfE,EAAAA,YAAY,EAAEA;EAPC,CAAjB;;MChFQR,SAAS3oB,OAAT2oB;;EAER,IAAMS,WAAW,GAAG,SAAdA,WAAc,CAAShrB,GAAT,EAAckqB,OAAd,EAAuBe,OAAvB,EAAgC;EAClD,MAAI1pB,CAAC,GAAG,IAAR;;EACA,MAAIvB,GAAG,CAACT,KAAJ,KAAc,KAAlB,EAAyB;;EAEvB,QAAI0rB,OAAO,CAACrqB,IAAR,KAAiB,IAArB,EAA2B;EACzBW,MAAAA,CAAC,GAAG,IAAIgpB,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAJ,CADyB;EAE1B,KAJsB;;;EAMvB,QAAI1mB,MAAM,CAAC8F,IAAP,CAAY2hB,OAAO,CAACnjB,KAApB,EAA2BzD,MAA3B,GAAoC,CAAxC,EAA2C;EACzC9C,MAAAA,CAAC,GAAG,IAAIgpB,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAJ,CADyC;EAE1C;EACF;;EACD,SAAO3oB,CAAP;EACD,CAbD;;EAcA,cAAc,GAAGypB,WAAjB;;ECfA,IAAMxd,SAAO,GAAG;EACd1B,EAAAA,IAAI,EAAES,MAAK,CAAC2e,IADE;EAEdhrB,EAAAA,KAAK,EAAEqM,MAAK,CAACoe,KAFC;EAGdrY,EAAAA,OAAO,EAAE/F,MAAK,CAACqe,OAHD;EAIdtnB,EAAAA,IAAI,EAAEiJ,MAAK,CAAC9J,IAJE;EAKdlC,EAAAA,MAAM,EAAEgM,MAAK,CAAC/J;EALA,CAAhB;;EASA,IAAM2oB,SAAS,GAAG,SAAZA,SAAY,CAAUnrB,GAAV,EAAekqB,OAAf,EAAwB;;EAExC,MAAI7qB,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,4CAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB,QAAI2E,GAAG,GAAG7E,CAAC,CAACoC,QAAF,GAAaioB,IAAb,CAAkB,SAAlB,CAAV;;EACA,QAAIlc,SAAO,CAACrC,cAAR,CAAuBjH,GAAvB,CAAJ,EAAiC;EAC/B,UAAIknB,KAAK,GAAG5d,SAAO,CAACtJ,GAAD,CAAnB;;EACA,UAAI,CAACknB,KAAL,EAAY;EACV,eAAO,IAAP;EACD;;EACD,UAAInf,IAAI,GAAG,IAAImf,KAAJ,CAAU,IAAV,EAAgBlnB,GAAhB,EAAqBgmB,OAArB,CAAX;EACA,aAAOje,IAAP;EACD;EACF,GAbuC;;;EAgBxC5M,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,8DAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAF,KAAY,IAAhB,EAAsB;EACpB,QAAI2E,IAAG,GAAG7E,CAAC,CAACoC,QAAF,GAAaioB,IAAb,CAAkB,SAAlB,CAAV;;EACA,QAAIzd,KAAI,GAAG,IAAIM,MAAK,CAACse,OAAV,CAAkB3mB,IAAlB,EAAuB,IAAvB,EAA6BgmB,OAA7B,CAAX;;EACA,WAAOje,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CAvBD;;EAwBA,eAAc,GAAGkf,SAAjB;;;;;;;;;ECjCA,cAAA,SAAA;EACA,WAASE,GAAT,UAAA;EACA,WAAS,GAAT,OAAA;EACA,cAAA,OAAA;EACA,cAAA,KAAA;EACA,cAAA,MAAA;EACA,cAAA,MAAA;EAEA,QAAA,GAAA,GAAA,QAAA;EACE,QAAA,GAAA,cAAA;EACA,QAAA,GAAA,YAAA;EACA,QAAA,GAAA,aAAA;EACA,QAAA,GAAA,aAAA;EACA,QAAA,aAAA;EACA,uBAAA,CAAA,GAAA,IAAA;EACA,mBAAA,CAAA,GAAA,GAAA;EACA,uBAAA,IAAA,GAAA;EACA,0BAAmBC,IAAAA,IAAAA;EACnB,uBAAA,CAAA,GAAA,IAAA;EACA;EACA,uBAAA,CAAA,GAAA,GAAA;2BACmB;0BACHC,IAAAA,IAAAA;gCACG,IAAA,IAAA;+BACC;;;;4BAGH;;;;;;+BAMI9iB,IAAAA,GAAAA;;;;;;;;;+BASF,IAAA,IAAA;6BACA;;6BACD;;2BACD+iB,CAAD,GAACA,IAAAA;;;0BAGC,CAAA,GAAA,IAAA;;;;;;;;6BAQC;;;;;;+BAOE;;;;;;;;;;;;;EAvDvB;;;;;OAKE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCdMT,iBAAiBnpB,OAAjBmpB;;EAGR,IAAMU,YAAY,GAAG,SAAfA,YAAe,CAASzrB,GAAT,EAAckqB,OAAd,EAAuB;EAC1C,MAAI3oB,CAAC,GAAG,IAAR;EACA,MAAI2C,GAAG,GAAGlE,GAAG,CAACC,KAAJ,CAAU,WAAV,EAAuBypB,IAAvB,CAA4B,SAA5B,CAAV;EACA,MAAIpmB,IAAI,GAAG,IAAX,CAH0C;;EAI1C,MAAIsC,CAAC,GAAG8lB,gBAAgB,CAACxnB,GAAD,EAAMZ,IAAN,CAAxB;;EACA,MAAIsC,CAAC,KAAK,IAAV,EAAgB;EACdrE,IAAAA,CAAC,GAAG,IAAIwpB,cAAJ,CAAiBnlB,CAAjB,EAAoB,IAApB,EAA0BskB,OAA1B,CAAJ;EACD;;EACD,SAAO3oB,CAAP;EACD,CATD;;EAUA,eAAc,GAAGkqB,YAAjB;;MCbQlB,SAAmC3oB,OAAnC2oB;MAAMG,QAA6B9oB,OAA7B8oB;MAAKK,iBAAwBnpB,OAAxBmpB;MAAcJ,UAAU/oB,OAAV+oB;EAGjC,IAAMgB,SAAS,GAAG;EAChBjd,EAAAA,KAAK,EAAE,eAACwb,OAAD,EAAa;EAClB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAhB,EAAuB,IAAvB,EAA6Bwb,OAA7B,CAAP;EACD,GAHe;EAIhBza,EAAAA,SAAS,EAAE,mBAACya,OAAD,EAAa;EACtB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAR,CAAc2R,KAAd,CAAoB,CAApB,EAAuB,KAAvB,CAAR,EAAuC,IAAvC,EAA6C6J,OAA7C,CAAP;EACD,GANe;EAOhB3a,EAAAA,QAAQ,EAAE,kBAAC2a,OAAD,EAAa;EACrB,WAAO,IAAIQ,KAAJ,CAAQR,OAAO,CAACxb,KAAR,CAAcoT,IAAd,CAAmB,CAAnB,EAAsB,KAAtB,CAAR,EAAsC,IAAtC,EAA4CoI,OAA5C,CAAP;EACD;EATe,CAAlB;EAaA;;EACA,IAAM0B,aAAa,GAAG,SAAhBA,aAAgB,CAAU5rB,GAAV,EAAekqB,OAAf,EAAwB;EAC5C,MAAI2B,WAAW,GAAG3B,OAAO,CAACxb,KAAR,CAAcpL,IAAd,EAAlB,CAD4C;;EAI5C,MAAIjE,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,kDAAV,CAAR,CAJ4C;;EAM5C,MAAI,CAACZ,CAAC,CAACE,KAAP,EAAc;EACZF,IAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,mDAAV,CAAJ;EACD;;EACD,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,GAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERlpB,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAEjE,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,MAA2BmC;EAHzB,KAAV;;EAKA,QAAItqB,EAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,GAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,EAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,EAAP;EACD;EACF,GAnB2C;;;;EAsB5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,mCAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,IAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERpmB,MAAAA,IAAI,EAAEjE,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,MAA2BmC;EAFzB,KAAV;;EAIA,QAAItqB,GAAC,GAAG,IAAIopB,OAAJ,CAAUviB,IAAV,EAAe,IAAf,EAAqB8hB,OAArB,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GAhC2C;;;;EAmC5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oCAAV,CAAJ,CAnC4C;;EAqC5C,MAAI,CAACZ,CAAC,CAACE,KAAP,EAAc;EACZF,IAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qCAAV,CAAJ;EACD,GAvC2C;;;EAyC5C,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEb,CAAC,CAACysB,MAAF,CAAS,OAAT,EAAkBpC,IAAlB,EADC;EAERlpB,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GAnD2C;;;EAqD5C,MAAIvB,GAAG,CAACe,GAAJ,CAAQ,QAAR,CAAJ,EAAuB;EACrB,QAAIqH,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEF,GAAG,CAACC,KAAJ,CAAU,QAAV,EAAoBypB,IAApB,EADC;EAERlpB,MAAAA,IAAI,EAAE,CAFE;;EAGR8C,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF,GA/D2C;;;EAkE5ClC,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oBAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI6I,KAAG,GAAG;EACRlI,MAAAA,KAAK,EAAEgqB,OAAO,CAACxb,KAAR,CAAcxO,KAAd,EADC;EAERM,MAAAA,IAAI,EAAEnB,CAAC,CAACysB,MAAF,CAAS,MAAT,EAAiBpC,IAAjB,EAFE;EAGRpmB,MAAAA,IAAI,EAAE4mB,OAAO,CAACxb,KAAR,CAAcpL,IAAd;EAHE,KAAV;;EAKA,QAAI/B,GAAC,GAAG,IAAIwpB,cAAJ,CAAiB3iB,KAAjB,EAAsB,IAAtB,EAA4B8hB,OAA5B,CAAR;;EACA,QAAI3oB,GAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,IAAtB,EAA4B;EAC1B,aAAO/O,GAAP;EACD;EACF;;EACD,MAAI2C,GAAG,GAAGlE,GAAG,CAAC0pB,IAAJ,CAAS,SAAT,CAAV,CA9E4C;;EAgF5C,MAAIiC,SAAS,CAACxgB,cAAV,CAAyBjH,GAAzB,MAAkC,IAAtC,EAA4C;EAC1C,QAAI3C,GAAC,GAAGoqB,SAAS,CAACznB,GAAD,CAAT,CAAegmB,OAAf,CAAR;;EACA,WAAO3oB,GAAP;EACD,GAnF2C;;;EAqF5C,MAAIA,CAAC,GAAG,IAAIgpB,MAAJ,CAASrmB,GAAT,EAAc,IAAd,EAAoBgmB,OAApB,CAAR,CArF4C;;EAuF5C,MAAI3oB,CAAC,CAACA,CAAF,CAAI+O,OAAJ,OAAkB,KAAtB,EAA6B;EAC3B,WAAO,IAAP;EACD;;EACD,SAAO/O,CAAP;EACD,CA3FD;;EA4FA,eAAc,GAAGqqB,aAAjB;;EC7GA,IAAMX,OAAO,GAAG;EACdnjB,EAAAA,KAAK,EAAElG,QADO;EAEdhB,EAAAA,IAAI,EAAEiB,OAFQ;EAGdkqB,EAAAA,QAAQ,EAAEjqB,WAHI;EAIdoI,EAAAA,QAAQ,EAAEnI;EAJI,CAAhB;EAOA,IAAMiqB,KAAK,GAAG;EACZC,EAAAA,OAAO,EAAEjqB,UADG;EAEZ3B,EAAAA,QAAQ,EAAE4B,WAFE;EAGZiqB,EAAAA,OAAO,EAAEhqB,WAHG;EAIZiqB,EAAAA,QAAQ,EAAEC;EAJE,CAAd;;EAOA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAUrsB,GAAV,EAAekqB,OAAf,EAAwB;;EAExC,MAAIpiB,KAAK,GAAGmjB,OAAO,CAACnjB,KAAR,CAAc9H,GAAd,CAAZ;EACA,MAAIqI,EAAE,GAAG4iB,OAAO,CAAC/gB,QAAR,CAAiBlK,GAAjB,CAAT;EACA,MAAIY,IAAI,GAAGqqB,OAAO,CAACrqB,IAAR,CAAaZ,GAAb,EAAkBkqB,OAAlB,CAAX;EACA,MAAIG,GAAG,GAAGY,OAAO,CAACc,QAAR,CAAiB/rB,GAAjB,CAAV,CALwC;;EAOxC,MAAIqI,EAAJ,EAAQ;EACN6hB,IAAAA,OAAO,GAAG1mB,MAAM,CAAC2M,MAAP,CAAc,EAAd,EAAkB+Z,OAAlB,EAA2B;EAAEhgB,MAAAA,QAAQ,EAAE7B;EAAZ,KAA3B,CAAV;EACA,QAAIwK,GAAG,GAAGqX,OAAO,CAACxb,KAAR,CAAc1E,MAAd,CAAqB,WAArB,CAAV;EACAkgB,IAAAA,OAAO,CAACxb,KAAR,GAAgBwb,OAAO,CAACxb,KAAR,SAAmBwb,OAAO,CAAChgB,QAA3B,EAAqCpE,GAArC,CAAyC+M,GAAzC,CAAhB;EACD;;EACD,MAAItR,CAAC,GAAG,IAAR,CAZwC;;EAexCA,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACC,OAAN,CAAcjsB,GAAd,EAAmBkqB,OAAnB,EAA4B;EAAEpiB,IAAAA,KAAK,EAALA,KAAF;EAASlH,IAAAA,IAAI,EAAJA,IAAT;EAAeypB,IAAAA,GAAG,EAAHA;EAAf,GAA5B,CAAT,CAfwC;;EAiBxC9oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAAC3rB,QAAN,CAAeL,GAAf,EAAoBkqB,OAApB,CAAT,CAjBwC;;EAmBxC3oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACE,OAAN,CAAclsB,GAAd,EAAmBkqB,OAAnB,CAAT,CAnBwC;;EAqBxC3oB,EAAAA,CAAC,GAAGA,CAAC,IAAIyqB,KAAK,CAACG,QAAN,CAAensB,GAAf,EAAoBkqB,OAApB,CAAT,CArBwC;;;;;;;;;;EAgCxC,MAAI,CAAC3oB,CAAL,EAAQ;EACN,WAAO,IAAP;EACD,GAlCuC;;;EAqCxC,MAAI8oB,GAAG,KAAK,MAAZ,EAAoB;EAClB9oB,IAAAA,CAAC,CAAC2b,IAAF;EACD;;EACD,MAAImN,GAAG,KAAK,MAAZ,EAAoB;EAClB9oB,IAAAA,CAAC,CAACya,IAAF;EACD,GA1CuC;;;EA4CxC,MAAIlU,KAAJ,EAAW;EACTvG,IAAAA,CAAC,CAAC+qB,UAAF,CAAaxkB,KAAb;EACD,GA9CuC;;;EAiDxCvG,EAAAA,CAAC,CAACgrB,SAAF,CAAY3rB,IAAZ;EAEA,SAAOW,CAAP;EACD,CApDD;;EAqDA,gBAAc,GAAG8qB,SAAjB;;EChEA,IAAMG,IAAI,GAAG,SAAPA,IAAO,CAAUvgB,IAAV,EAAgBie,OAAhB,EAAyB;EACpCje,EAAAA,IAAI,GAAGA,IAAI,CAACqgB,UAAL,CAAgBpC,OAAO,CAACuC,eAAxB,CAAP;EACA,SAAOxgB,IAAP;EACD,CAHD;;;EAMA,IAAMygB,KAAK,GAAG,SAARA,KAAQ,CAAU1sB,GAAV,EAAekqB,OAAf,EAAwB;;EAEpC,MAAI7qB,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,iCAAV,CAAR;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIiI,KAAK,GAAGnI,CAAC,CAACysB,MAAF,CAAS,OAAT,CAAZ;EACAtkB,IAAAA,KAAK,GAAG6kB,YAAS,CAAC7kB,KAAD,EAAQ0iB,OAAR,CAAjB;EACA,QAAIziB,GAAG,GAAGpI,CAAC,CAACysB,MAAF,CAAS,KAAT,CAAV;EACArkB,IAAAA,GAAG,GAAG4kB,YAAS,CAAC5kB,GAAD,EAAMyiB,OAAN,CAAf;;EACA,QAAI1iB,KAAJ,EAAW;EACT,aAAO;EACLA,QAAAA,KAAK,EAAEA,KADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GAdmC;;;EAiBpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6DAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI8Q,GAAG,GAAGhR,CAAC,CAACysB,MAAF,EAAV;EACA,QAAItkB,MAAK,GAAG6I,GAAG,CAACqN,IAAhB;;EACA,QAAIrN,GAAG,CAAC/M,IAAR,EAAc;EACZkE,MAAAA,MAAK,GAAGA,MAAK,CAAClB,MAAN,CAAa+J,GAAG,CAAC/M,IAAjB,CAAR;EACD;;EACDkE,IAAAA,MAAK,GAAG6kB,YAAS,CAAC7kB,MAAD,EAAQ0iB,OAAR,CAAjB;;EACA,QAAI1iB,MAAJ,EAAW;EACT,UAAIC,IAAG,GAAG4I,GAAG,CAACoH,EAAd;;EACA,UAAIpH,GAAG,CAAC/M,IAAR,EAAc;EACZmE,QAAAA,IAAG,GAAGA,IAAG,CAACnB,MAAJ,CAAW+J,GAAG,CAAC/M,IAAf,CAAN;EACD;;EACDmE,MAAAA,IAAG,GAAG4kB,YAAS,CAAC5kB,IAAD,EAAMyiB,OAAN,CAAf;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEA,MADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GApCmC;;;EAsCpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,kEAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAI8Q,IAAG,GAAGhR,CAAC,CAACysB,MAAF,EAAV;;EACA,QAAItkB,OAAK,GAAG6I,IAAG,CAACnQ,KAAJ,CAAUoG,MAAV,CAAiB+J,IAAG,CAACqN,IAArB,EAA2BrN,IAAG,CAAC/M,IAA/B,CAAZ;;EACAkE,IAAAA,OAAK,GAAG6kB,YAAS,CAAC7kB,OAAD,EAAQ0iB,OAAR,CAAjB;;EACA,QAAI1iB,OAAJ,EAAW;EACT,UAAIC,KAAG,GAAG4I,IAAG,CAACnQ,KAAJ,CAAUoG,MAAV,CAAiB+J,IAAG,CAACoH,EAArB,EAAyBpH,IAAG,CAAC/M,IAA7B,CAAV;;EACAmE,MAAAA,KAAG,GAAG4kB,YAAS,CAAC5kB,KAAD,EAAMyiB,OAAN,CAAf;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEA,OADF;EAELC,QAAAA,GAAG,EAAEA;EAFA,OAAP;EAID;EACF,GAnDmC;;;EAqDpCpI,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qDAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIkY,EAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;EACArU,IAAAA,EAAE,GAAG4U,YAAS,CAAC5U,EAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIzS,EAAJ,EAAQ;EACN,UAAIkV,QAAQ,GAAGttB,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAf;EACA,UAAIpO,IAAI,GAAGjG,EAAE,CAAC5R,KAAH,EAAX;EACA6X,MAAAA,IAAI,CAACnc,CAAL,GAASmc,IAAI,CAACnc,CAAL,CAAOf,IAAP,CAAYmsB,QAAQ,CAACjD,IAAT,CAAc,QAAd,CAAZ,CAAT;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,IADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAlEmC;;;EAoEpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,2CAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIkY,GAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;;EACArU,IAAAA,GAAE,GAAG4U,YAAS,CAAC5U,GAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIzS,GAAJ,EAAQ;EACN,UAAIkV,SAAQ,GAAGttB,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAf;;EACA,UAAIpO,KAAI,GAAGjG,GAAE,CAAC5R,KAAH,EAAX;;EACA6X,MAAAA,KAAI,CAACnc,CAAL,GAASmc,KAAI,CAACnc,CAAL,CAAOf,IAAP,CAAYmsB,SAAQ,CAACjD,IAAT,CAAc,QAAd,CAAZ,CAAT;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,KADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAjFmC;;;EAmFpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,uCAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIme,MAAI,GAAGre,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAX;;EACApO,IAAAA,MAAI,GAAG2O,YAAS,CAAC3O,MAAD,EAAOwM,OAAP,CAAhB;;EACA,QAAIxM,MAAJ,EAAU;EACR,UAAIkP,MAAM,GAAGvtB,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAb;;EACA,UAAIrU,IAAE,GAAGiG,MAAI,CAAC7X,KAAL,EAAT;;EACA4R,MAAAA,IAAE,CAAClW,CAAH,GAAOkW,IAAE,CAAClW,CAAH,CAAKf,IAAL,CAAUosB,MAAM,CAAClD,IAAP,CAAY,QAAZ,CAAV,CAAP;EACA,aAAO;EACLliB,QAAAA,KAAK,EAAEkW,MADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GAhGmC;;;EAkGpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,oDAAV,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIme,MAAI,GAAGre,CAAC,CAACysB,MAAF,CAAS,MAAT,CAAX;;EACA,QAAIrU,IAAE,GAAGpY,CAAC,CAACysB,MAAF,CAAS,IAAT,CAAT;;EACApO,IAAAA,MAAI,GAAG2O,YAAS,CAAC3O,MAAD,EAAOwM,OAAP,CAAhB;EACAzS,IAAAA,IAAE,GAAG4U,YAAS,CAAC5U,IAAD,EAAKyS,OAAL,CAAd;;EACA,QAAIxM,MAAI,IAAIjG,IAAZ,EAAgB;EACd,aAAO;EACLjQ,QAAAA,KAAK,EAAEkW,MADF;EAELjW,QAAAA,GAAG,EAAEgQ;EAFA,OAAP;EAID;EACF,GA9GmC;;;EAgHpCpY,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6BAAV,EAAyC,CAAzC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,EAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,EAAJ,EAAO;EACL,UAAMmN,KAAK,GAAG,IAAI6b,MAAJ,CAASL,OAAO,CAACxb,KAAjB,EAAwB,IAAxB,EAA8Bwb,OAA9B,CAAd;EACA,aAAO;EACL1iB,QAAAA,KAAK,EAAEkH,KADF;EAELjH,QAAAA,GAAG,EAAE+kB,IAAI,CAACjrB,EAAC,CAACsE,KAAF,EAAD,EAAYqkB,OAAZ;EAFJ,OAAP;EAID;EACF,GA1HmC;;;EA4HpC7qB,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,6BAAV,EAAyC,CAAzC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,GAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,GAAJ,EAAO;EACL,aAAO;EACLiG,QAAAA,KAAK,EAAEjG,GADF;EAELkG,QAAAA,GAAG,EAAE+kB,IAAI,CAACjrB,GAAC,CAACsE,KAAF,EAAD,EAAYqkB,OAAZ;EAFJ,OAAP;EAID;EACF,GArImC;;;EAuIpC7qB,EAAAA,CAAC,GAAGW,GAAG,CAACC,KAAJ,CAAU,qBAAV,EAAiC,CAAjC,CAAJ;;EACA,MAAIZ,CAAC,CAACE,KAAN,EAAa;EACX,QAAIgC,GAAC,GAAG8qB,YAAS,CAAChtB,CAAD,EAAI6qB,OAAJ,CAAjB;;EACA,QAAI3oB,GAAJ,EAAO;EACL,aAAO;EACLiG,QAAAA,KAAK,EAAEjG,GADF;EAELkG,QAAAA,GAAG,EAAElG,GAAC,CAACsE,KAAF,GAAU4B,GAAV;EAFA,OAAP;EAID;EACF,GAhJmC;;;EAkJpC,MAAIlG,CAAC,GAAG8qB,YAAS,CAACrsB,GAAD,EAAMkqB,OAAN,CAAjB;;EACA,MAAI3oB,CAAJ,EAAO;EACL,WAAO;EACLiG,MAAAA,KAAK,EAAEjG,CADF;EAELkG,MAAAA,GAAG,EAAElG,CAAC,CAACsE,KAAF,GAAU4B,GAAV;EAFA,KAAP;EAID;;EACD,SAAO;EACLD,IAAAA,KAAK,EAAE,IADF;EAELC,IAAAA,GAAG,EAAE;EAFA,GAAP;EAID,CA7JD;;EA8JA,iBAAc,GAAGilB,KAAjB;;ECnKA,IAAMrlB,OAAO,GAAG,SAAVA,OAAU,CAAUrH,GAAV,EAAekqB,OAAf,EAAwB;;EAEtCA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EAEAA,EAAAA,OAAO,CAAChgB,QAAR,GAAmBggB,OAAO,CAAChgB,QAAR,IAAoB,SAAvC;EACAggB,EAAAA,OAAO,CAACxb,KAAR,GAAgBmU,WAAS,CAACqH,OAAO,CAACxb,KAAR,IAAiB,IAAlB,EAAwBwb,OAAO,CAAChgB,QAAhC,CAAzB,CALsC;;EAOtClK,EAAAA,GAAG,GAAGoF,YAAS,CAACpF,GAAD,CAAf,CAPsC;;EAStC,SAAO6sB,aAAW,CAAC7sB,GAAD,EAAMkqB,OAAN,CAAlB;EACD,CAVD;;EAWA,cAAc,GAAG7iB,OAAjB;;ECfA,IAAIyG,GAAG,GAAG,CACR,CAAC,KAAD,EAAQ,QAAR,CADQ,EAER,CAAC,KAAD,EAAQ,SAAR,CAFQ,EAGR,CAAC,MAAD,EAAS,SAAT,CAHQ,EAIR,CAAC,KAAD,EAAQ,WAAR,CAJQ,EAKR,CAAC,KAAD,EAAQ,UAAR,CALQ,EAMR,CAAC,OAAD,EAAU,UAAV,CANQ,EAOR,CAAC,KAAD,EAAQ,QAAR,CAPQ,EAQR,CAAC,KAAD,EAAQ,UAAR,CARQ,EASR,CAAC,KAAD,EAAQ,QAAR,CATQ,EAWR,CAAC,KAAD,EAAQ,SAAR,CAXQ,EAYR,CAAC,KAAD,EAAQ,UAAR,CAZQ,EAaR,CAAC,KAAD,EAAQ,OAAR,CAbQ,EAcR,CAAC,KAAD,EAAQ,OAAR,CAdQ,EAeR,CAAC,KAAD,EAAQ,MAAR,CAfQ,EAgBR,CAAC,KAAD,EAAQ,MAAR,CAhBQ,EAiBR,CAAC,KAAD,EAAQ,QAAR,CAjBQ,EAkBR,CAAC,KAAD,EAAQ,WAAR,CAlBQ,EAmBR,CAAC,MAAD,EAAS,WAAT,CAnBQ,EAoBR,CAAC,KAAD,EAAQ,SAAR,CApBQ,EAqBR,CAAC,KAAD,EAAQ,UAAR,CArBQ,EAsBR,CAAC,KAAD,EAAQ,UAAR,CAtBQ,CAAV;EAyBAA,GAAG,GAAGA,GAAG,CAACgf,GAAJ,CAAQ,UAAA3W,CAAC,EAAI;EACjB,SAAO;EAAE,aAAOA,CAAC,CAAC,CAAD,CAAV;EAAe,YAAMA,CAAC,CAAC,CAAD;EAAtB,GAAP;EACD,CAFK,CAAN;EAIA,YAAc,GAAGrI,GAAjB;;EC1BA,aAAc,GAAG;;EAEf0E,EAAAA,IAAI,EAAE,cAAUzD,OAAV,EAAmB;EAAA;;EACvB,QAAI5L,CAAC,GAAG,IAAR;;EACA,QAAI,OAAO4L,OAAP,KAAmB,QAAvB,EAAiC;EAC/B5L,MAAAA,CAAC,GAAG4L,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EACDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EAAErN,MAAAA,KAAK,EAAE;EAAT,KAArB;EACA,QAAI2O,GAAG,GAAG,EAAV;EACA,QAAIrG,MAAM,GAAG+E,OAAO,CAAC/E,MAAR,IAAkB,KAA/B;EACA,SAAK5H,OAAL,CAAa,UAACpC,GAAD,EAAS;EACpB,UAAIwS,IAAI,GAAGxS,GAAG,CAACwS,IAAJ,CAASzD,OAAT,EAAkB,CAAlB,CAAX;EACA,UAAI3G,GAAG,GAAGyG,UAAK,CAAC7O,GAAD,EAAM,KAAI,CAACkqB,OAAX,CAAf;EACA,UAAI1iB,KAAK,GAAGY,GAAG,CAACZ,KAAJ,GAAYY,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiBA,MAAjB,CAAZ,GAAuC,IAAnD;EACA,UAAIvC,GAAG,GAAGW,GAAG,CAACX,GAAJ,GAAUW,GAAG,CAACX,GAAJ,CAAQuC,MAAR,CAAeA,MAAf,CAAV,GAAmC,IAA7C,CAJoB;;EAMpBwI,MAAAA,IAAI,CAAChS,IAAL,GAAY;EACVgH,QAAAA,KAAK,EAAEA,KADG;EAEVC,QAAAA,GAAG,EAAEA;EAFK,OAAZ,CANoB;;EAWpB,UAAID,KAAK,IAAIC,GAAb,EAAkB;EAChB+K,QAAAA,IAAI,CAAChS,IAAL,CAAUH,QAAV,GAAqB+H,GAAG,CAACZ,KAAJ,CAAUjG,CAAV,CAAY8K,IAAZ,CAAiBjE,GAAG,CAACX,GAAJ,CAAQlG,CAAzB,CAArB,CADgB;;EAGhB,eAAOiR,IAAI,CAAChS,IAAL,CAAUH,QAAV,CAAmB0L,YAA1B;EACA,eAAOyG,IAAI,CAAChS,IAAL,CAAUH,QAAV,CAAmBsM,OAA1B;EACD;;EACD0D,MAAAA,GAAG,CAACyH,IAAJ,CAAStF,IAAT;EACD,KAlBD;;EAmBA,QAAIrP,CAAC,KAAK,IAAV,EAAgB;EACd,aAAOkN,GAAG,CAAClN,CAAD,CAAV;EACD;;EACD,WAAOkN,GAAP;EACD,GAlCc;;;EAqCfrG,EAAAA,MAAM,EAAE,gBAAU+J,GAAV,EAAe;EAAA;;EACrB,SAAK3R,OAAL,CAAa,UAACpC,GAAD,EAAS;EACpB,UAAIoI,GAAG,GAAGyG,UAAK,CAAC7O,GAAD,EAAM,MAAI,CAACkqB,OAAX,CAAf;EACA,UAAIhmB,GAAG,GAAG,EAAV;;EACA,UAAIkE,GAAG,CAACZ,KAAR,EAAe;EACbtD,QAAAA,GAAG,GAAGkE,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiB+J,GAAjB,CAAN;;EACA,YAAI3L,GAAG,CAACX,GAAR,EAAa;EACX,cAAIA,GAAG,GAAGW,GAAG,CAACZ,KAAJ,CAAUwC,MAAV,CAAiB+J,GAAjB,CAAV;;EACA,cAAI7P,GAAG,KAAKuD,GAAZ,EAAiB;EACfvD,YAAAA,GAAG,IAAI,SAASuD,GAAhB;EACD;EACF;;EACDzH,QAAAA,GAAG,CAACgB,WAAJ,CAAgBkD,GAAhB,EAAqB;EAAE6oB,UAAAA,QAAQ,EAAE,IAAZ;EAAkBC,UAAAA,QAAQ,EAAE;EAA5B,SAArB;EACD;EACF,KAbD;EAcA,WAAO,IAAP;EACD,GArDc;;;EAuDfC,EAAAA,UAAU,EAAE,sBAAY;EAAA;;EACtBC,IAAAA,QAAO,CAAC9qB,OAAR,CAAgB,UAAC+T,CAAD,EAAO;EACrB,MAAA,MAAI,CAAChR,OAAL,CAAagR,CAAC,SAAd,EAAsBA,CAAC,QAAvB,EAA8B,IAA9B;EACD,KAFD;EAGA,WAAO,IAAP;EACD,GA5Dc;;;EA8DfgX,EAAAA,WAAW,EAAE,uBAAY;EAAA;;EACvBD,IAAAA,QAAO,CAAC9qB,OAAR,CAAgB,UAAC+T,CAAD,EAAO;EACrB,MAAA,MAAI,CAAChR,OAAL,CAAagR,CAAC,QAAd,EAAqBA,CAAC,SAAtB,EAA8B,IAA9B;EACD,KAFD;EAGA,WAAO,IAAP;EACD;EAnEc,CAAjB;;ECGA,IAAMyK,YAAU,GAAG,SAAbA,UAAa,CAAUwM,GAAV,EAAeC,KAAf,EAAsB;;EAEvCA,EAAAA,KAAK,CAACC,OAAN,CAAcC,KAAd,EAFuC;;EAIvCF,EAAAA,KAAK,CAACG,QAAN,CAAeC,KAAf,EAJuC;;EAMvCJ,EAAAA,KAAK,CAACK,WAAN,CAAkBC,MAAlB;;;EANuC,MASjCC,KATiC;EAAA;;EAAA;;EAUrC,mBAAYC,IAAZ,EAAkBnQ,IAAlB,EAAwBxI,CAAxB,EAA2B;EAAA;;EAAA;;EACzB,gCAAM2Y,IAAN,EAAYnQ,IAAZ,EAAkBxI,CAAlB;EACA,YAAKgV,OAAL,GAAe;EACbuC,QAAAA,eAAe,EAAE;EAAElT,UAAAA,KAAK,EAAE;EAAT;EADJ,OAAf;EAFyB;EAK1B;;EAfoC;EAAA,IASnB6T,GATmB;;;EAkBvC5pB,EAAAA,MAAM,CAAC2M,MAAP,CAAcyd,KAAK,CAACnqB,SAApB,EAA+B9B,SAA/B;;EAEAyrB,EAAAA,GAAG,CAAC3pB,SAAJ,CAAc4L,KAAd,GAAsB,UAAUlM,CAAV,EAAa;EACjC,QAAI+mB,OAAO,GAAG,EAAd;;EACA,QAAI/mB,CAAC,IAAI,QAAOA,CAAP,MAAa,QAAtB,EAAgC;EAC9B+mB,MAAAA,OAAO,GAAG/mB,CAAV;EACAA,MAAAA,CAAC,GAAG,IAAJ;EACD;;EACD,QAAI2qB,CAAC,GAAG,KAAKC,OAAL,EAAR;EACA,QAAI1e,KAAK,GAAGye,CAAC,CAAC7tB,KAAF,CAAQ,QAAR,CAAZ;;EACA,QAAI,OAAOkD,CAAP,KAAa,QAAjB,EAA2B;EACzBkM,MAAAA,KAAK,GAAGA,KAAK,CAACsT,GAAN,CAAUxf,CAAV,CAAR;EACD;;EACD,QAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACzBkM,MAAAA,KAAK,GAAGA,KAAK,CAACsT,GAAN,CAAUxf,CAAV,CAAR;EACD;;EACD,QAAI5B,CAAC,GAAG,IAAIqsB,KAAJ,CAAUve,KAAK,CAACwe,IAAhB,EAAsB,IAAtB,EAA4B,KAAKR,KAAjC,CAAR;;EACA,QAAInD,OAAO,CAACxb,KAAZ,EAAmB;EACjBwb,MAAAA,OAAO,CAACxb,KAAR,GAAgBmU,WAAS,CAACqH,OAAO,CAACxb,KAAT,EAAgBwb,OAAO,CAAChgB,QAAxB,CAAzB;EACD;;EACD3I,IAAAA,CAAC,CAAC2oB,OAAF,GAAYA,OAAZ;EACA,WAAO3oB,CAAP;EACD,GApBD;EAqBD,CAzCD;;WA2Cc,GAAGqf;;;;;;;;"} \ No newline at end of file diff --git a/plugins/dates/builds/compromise-dates.min.js b/plugins/dates/builds/compromise-dates.min.js index b7b921fef..757b3269b 100644 --- a/plugins/dates/builds/compromise-dates.min.js +++ b/plugins/dates/builds/compromise-dates.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).compromiseDates=e()}(this,(function(){"use strict";function t(e){return(t="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})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var a=0;a1e3&&n<3e3&&t.tag("Year",e)}}},f="date-values",y="date-tagger",p="section-tagger",g="time-tagger",v="shift-tagger",b="fix-tagger",w=[function(t){t.match("in the (night|evening|morning|afternoon|day|daytime)").tag("Time","in-the-night"),t.match("(#Value|#Time) (am|pm)").tag("Time","value-ampm");var e=t.if("#Month");!0===e.found&&(e.match("#Month #Date+").tag("Date","correction-numberRange"),e.match("#Value of #Month").tag("Date","value-of-month"),e.match("#Cardinal #Month").tag("Date","cardinal-month"),e.match("#Month #Value to #Value").tag("Date","value-to-value"),e.match("#Month the #Value").tag("Date","month-the-value"));var a=t.if("#Value");if(!0===a.found){a.match("(#WeekDay|#Month) #Value").ifNo("#Money").tag("Date","date-value"),a.match("#Value (#WeekDay|#Month)").ifNo("#Money").tag("Date","value-date"),a.match("#TextValue #TextValue").if("#Date").tag("#Date","textvalue-date");var n=a.if("#Duration");!0===n.found&&(n.match("for #Value #Duration").tag("Date","for-x-duration"),n.match("#Value #Duration #Conjunction").tag("Date","val-duration-conjunction"),n.match("".concat(c,"? #Value #Duration")).tag("Date","value-duration"),n.match("#Value #Duration old").unTag("Date","val-years-old"))}var r=t.if(h);!0===r.found&&(r.match("".concat(c,"? ").concat(d," ").concat(h)).tag("Date","thisNext-season"),r.match("the? ".concat(l," of ").concat(h)).tag("Date","section-season"),r.match("".concat(h," ").concat(c,"? #Cardinal")).tag("Date","season-year"));var o=t.if("#Date");!0===o.found&&(o.match("#Date the? #Ordinal").tag("Date","correction"),o.match("".concat(d," #Date")).tag("Date","thisNext"),o.match("due? (by|before|after|until) #Date").tag("Date","by"),o.match("(last|next|this|previous|current|upcoming|coming|the) #Date").tag("Date","next-feb"),o.match("the? ".concat(l," of #Date")).tag("Date","section-of"),o.match("#Ordinal #Duration in #Date").tag("Date","duration-in"),o.match("(early|late) (at|in)? the? #Date").tag("Time","early-evening"),o.match("#Date (by|before|after|at|@|about) #Cardinal").not("^#Date").tag("Time","date-before-Cardinal"),o.match("#Date [(am|pm)]",0).unTag("Verb").unTag("Copula").tag("Time","date-am"),o.match("#Date (#Preposition|to) #Date").ifNo("#Duration").tag("Date","date-prep-date"));var i=t.if("#Cardinal");if(!0===i.found){var u=i.match("#Date #Value [#Cardinal]",0);m(u,"date-value-year"),u=i.match("#Date+ [#Cardinal]",0),m(u,"date-year"),u=i.match("#Month #Value [#Cardinal]",0),m(u,"month-value-year"),u=i.match("#Month #Value to #Value [#Cardinal]",0),m(u,"month-range-year"),u=i.match("(in|of|by|during|before|starting|ending|for|year) [#Cardinal]",0),m(u,"in-year"),u=i.match("(q1|q2|q3|q4) [#Cardinal]",0),m(u,"in-year"),u=i.match("#Ordinal quarter [#Cardinal]",0),m(u,"in-year"),u=i.match("the year [#Cardinal]",0),m(u,"in-year"),function(t,e){if(!0===t.found){var a=t.termList()[0];if(a){var n=parseInt(a.clean,10);n&&n>1900&&n<2030&&t.tag("Year",e)}}}(u=i.match("it (is|was) [#Cardinal]",0),"in-year")}var s=t.if("#Time");return!0===s.found&&(s.match("(by|before|after|at|@|about) #Time").tag("Time","preposition-time"),s.match("#Cardinal #Time").not("#Year").tag("Time","value-time"),s.match("#Time [(eastern|pacific|central|mountain)]",0).tag("Date","timezone"),s.match("#Time [(est|pst|gmt)]",0).tag("Date","timezone abbr")),t},function(t){return t.match("!once [a] #Duration",0).replaceWith("1").tag("Cardinal",f),t.has("#Value")&&(t.match("#Month #Value to #Value of? #Year?").tag("Date",f),t.match("#Value to #Value of? #Month #Year?").tag("Date",f),t.match("#Value #Duration of #Date").tag("Date",f),t.match("#Value+ #Duration (after|before|into|later|afterwards|ago)?").tag("Date",f),t.match("#Value #Date").tag("Date",f),t.match("#Date #Value").tag("Date",f),t.match("#Date #Preposition #Value").tag("Date",f),t.match("#Date (after|before|during|on|in) #Value").tag("Date",f),t.match("#Value (year|month|week|day) and a half").tag("Date",f),t.match("#Value and a half (years|months|weeks|days)").tag("Date",f),t.match("on the #Ordinal").tag("Date",f)),t},function(t){return t.match("(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)").match("#Noun").tag("Season",y),t.match("(q1|q2|q3|q4)").tag("FinancialQuarter",y),t.match("(this|next|last|current) quarter").tag("FinancialQuarter",y),t.match("(this|next|last|current) season").tag("Season",y),t.has("#Date")&&(t.match("#Date #Preposition #Date").tag("Date",y),t.match("(once|twice) (a|an|each) #Date").tag("Date",y),t.match("(by|until|on|in|at|during|over|every|each|due) the? #Date").tag("Date",y),t.match("#Date+").tag("Date",y),t.match("(by|until|on|in|at|during|over|every|each|due) the? #Date").tag("Date",y),t.match("a #Duration").tag("Date",y),t.match("(between|from) #Date").tag("Date",y),t.match("(to|until|upto) #Date").tag("Date",y),t.match("#Date and #Date").tag("Date",y),t.match("(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)").tag("Date",y),t.match("the? #Date after next one?").tag("Date",y),t.match("(about|approx|approximately|around) #Date").tag("Date",y)),t},function(t){return t.has("#Date")&&(t.match("this? (last|next|past|this|previous|current|upcoming|coming|the) #Date").tag("Date",p),t.match("(starting|beginning|ending) #Date").tag("Date",p),t.match("the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)").tag("Date",p),t.match("(the|this) #Date").tag("Date",p)),t},function(t){return t.has("#Cardinal")&&!t.has("#Month")&&t.match("(half|quarter|25|15|10|5) (past|after|to) #Cardinal").tag("Time",g),t.has("#Date")&&(t.match("#Noun (standard|daylight|central|mountain)? time").tag("Timezone",g),t.match("/^utc[+-][0-9]/").tag("Timezone",g),t.match("/^gmt[+-][0-9]/").tag("Timezone",g),t.match("(in|for|by|near|at) #Timezone").tag("Timezone",g)),t},function(t){return t.has("#Date")&&(t.match("#Cardinal #Duration (before|after|ago|from)").tag("#DateShift",v),t.match("in #Cardinal #Duration").tag("#DateShift",v),t.match("#Cardinal #Duration and? #DateShift").tag("#DateShift",v),t.match("#DateShift and #Cardinal #Duration").tag("#DateShift",v)),t},function(t){if(t.has("#Date")){var e=t.match("#Date+ by #Date+");e.found&&!e.has("^due")&&e.match("^#Date+").unTag("Date","by-monday");var a=t.match("#Date+");a.match("^day$").unTag("Date","spa-day"),a.match("(in|of|by|for)? (#Possessive && #Date)").unTag("Date","tomorrows meeting");var n="(yesterday|today|tomorrow)";a.has(n)&&(a.match("".concat(n," [#Value]$")).unTag("Date","yesterday-7"),a.match("^[#Value] ".concat(n,"$"),0).unTag("Date","7 yesterday"),a.match("#WeekDay+ ".concat(n,"$")).unTag("Date").lastTerm().tag("Date","fri-yesterday"),a.match("(this|last|next) #Date ".concat(n,"$")).unTag("Date").lastTerm().tag("Date","this month yesterday")),a.match("on #Cardinal$").unTag("Date",b),a.match("this tomorrow").terms(0).unTag("Date","this-tomorrow"),a.match("(q1|q2|q3|q4) #Year").tag("Date",b),a.match("^#Value (this|next|last)").terms(0).unTag("Date",b),a.has("(last|this|next)")&&(a.match("(last|this|next) #Duration #Value").terms(2).unTag("Date",b),a.match("!#Month #Value (last|this|next) #Date").terms(0).unTag("Date",b)),!1===a.has("(#Year|#Time|#TextValue|#NumberRange)")&&a.match("(#Month|#WeekDay) #Value #Value").terms(2).unTag("Date",b),a.has("^between")&&!a.has("and .")&&a.unTag("Date",b),!a.has("#Month #Month")||a.has("@hasHyphen")||a.has("@hasComma")||a.match("#Month").lastTerm().unTag("Date","month-month"),a.has("(minutes|seconds|weeks|hours|days|months)")&&!a.has("#Value #Duration")&&a.match("(minutes|seconds|weeks|hours|days|months)").unTag("#Date","log-hours"),a.has("about #Holiday")&&a.match("about").unTag("#Date","about-thanksgiving")}return t}],k=function(t){return w.forEach((function(e){return e(t)})),t},D={FinancialQuarter:{isA:"Date"},Season:{isA:"Date"},Year:{isA:["Date"],notA:"RomanNumeral"},Duration:{isA:["Date","Noun"]},Holiday:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"]},DateShift:{isA:["Date"]}};var z,O=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){e.isLeapYear=function(t){return t%4==0&&t%100!=0||t%400==0},e.isDate=function(t){return"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(t.valueOf())},e.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)},e.isObject=function(t){return"[object Object]"===Object.prototype.toString.call(t)},e.zeroPad=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,a="0";return(t+="").length>=e?t:new Array(e-t.length+1).join(a)+t},e.titleCase=function(t){return t?t[0].toUpperCase()+t.substr(1):""},e.ordinal=function(t){var e=t%10,a=t%100;return 1===e&&11!==a?t+"st":2===e&&12!==a?t+"nd":3===e&&13!==a?t+"rd":t+"th"},e.toCardinal=function(t){return t=(t=String(t)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(t,10)},e.normalize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(t=(t=(t=(t=t.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))?"date":t},e.getEpoch=function(t){return"number"==typeof t?t:e.isDate(t)?t.getTime():t.epoch?t.epoch:null},e.beADate=function(t,a){return!1===e.isObject(t)?a.clone().set(t):t},e.formatTimezone=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=Math.abs(t),r=t>0?"+":"-";return"".concat(r).concat(e.zeroPad(n)).concat(a,"00")}})),_=(O.isLeapYear,O.isDate,O.isArray,O.isObject,O.zeroPad,O.titleCase,O.ordinal,O.toCardinal,O.normalize,O.getEpoch,O.beADate,O.formatTimezone,O.zeroPad),x=function(t,e,a,n){var r=new Date(t),o=(r.getTimezoneOffset()||0)+60*n;o=60*o*1e3;var i=function(t){return _(t.getMonth()+1)+"/"+_(t.getDate())+":"+_(t.getHours())}(r=new Date(t+o));return i>=e&&i");return!0===x(t.epoch,r[0],r[1],a)?a:n},M=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"],T=(z=Object.freeze({__proto__:null,default:{"9|s":"2/dili,2/jayapura","9|n":"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau","9.5|s|04/05:03->10/04:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s":"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west","8|n|03/25:03->09/29:23":"2/ulan_bator","8|n":"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos","6.5|n":"2/rangoon,2/yangon,9/cocos","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives","5.75|n":"2/kathmandu,2/katmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/21:00->09/20:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/29:03->10/25:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye","3|n|03/29:02->10/25:03":"8/chisinau,8/tiraspol","3|n|03/29:00->10/24:24":"2/beirut","3|n|03/27:02->10/25:02":"2/jerusalem,2/tel_aviv","3|n|03/27:00->10/31:01":"2/gaza,2/hebron","3|n|03/27:00->10/30:01":"2/amman","3|n|03/27:00->10/29:24":"2/damascus","3|n":"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte","2|s|03/29:02->10/25:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/29:02->10/25:03":"0/ceuta,arctic/longyearbyen,3/jan_mayen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s|04/02:01->09/03:03":"0/windhoek","1|s":"0/kinshasa,0/luanda","1|n|04/19:03->05/31:02":"0/casablanca,0/el_aaiun","1|n|03/29:01->10/25:02":"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london","1|n":"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/05:04->09/27:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/05:03->09/27:02":"12/mcmurdo,12/south_pole,11/auckland","12|s|01/12:03->11/08:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/05:03->04/05:02":"11/chatham","11|s":"12/macquarie,11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape","11.5|n|04/05:03->10/04:02":"11/norfolk","10|s|04/05:03->10/04:02":"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap","10.5|s|04/05:01->10/04:02":"4/lhi,4/lord_howe","0|n|03/29:00->10/25:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu","-9|n|03/08:02->11/01:02":"1/adak,1/atka","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/08:02->11/01:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat","-8|n":"11/pitcairn","-7|n|03/08:02->11/01:02":"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte","-7|n":"1/creston,1/dawson_creek,1/hermosillo,1/phoenix","-6|s|04/04:22->09/05:22":"7/easterisland,11/easter","-6|n|04/05:02->10/25:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/08:02->11/01:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos","-5|s":"1/lima,1/rio_branco,5/acre","-5|n|04/05:02->10/25:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n|03/08:02->11/01:02":"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central","-5|n":"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/04:24->09/06:00":"1/santiago,7/continental","-4|s|03/21:24->10/04:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n|03/08:02->11/01:02":"1/detroit,1/fort_wayne,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,6/eastern","-4|n|03/08:00->11/01:01":"1/havana","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east","-3|n|03/08:02->11/01:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem","-2|s":"5/denoronha","-2|n|03/28:22->10/24:23":"1/godthab","-2|n|03/08:02->11/01:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia","-2.5|n|03/08:02->11/01:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti"}}))&&z.default||z,q={};Object.keys(T).forEach((function(t){var e=t.split("|"),a={offset:Number(e[0]),hem:e[1]};e[2]&&(a.dst=e[2]),T[t].split(",").forEach((function(t){t=t.replace(/(^[0-9]+)\//,(function(t,e){return e=Number(e),M[e]+"/"})),q[t]=a}))})),q.utc={offset:0,hem:"n"};for(var P=-14;P<=14;P+=.5){var C=P;C>0&&(C="+"+C);var S="etc/gmt"+C;q[S]={offset:-1*P,hem:"n"},q[S="utc/gmt"+C]={offset:-1*P,hem:"n"}}var V=q,E=/(\-?[0-9]+)h(rs)?/i,A=/(\-?[0-9]+)/,N=/utc([\-+]?[0-9]+)/i,L=/gmt([\-+]?[0-9]+)/i,Y=function(t){return(t=Number(t))>-13&&t<13?"etc/gmt"+(t=((t*=-1)>0?"+":"")+t):null},I=function(t){var e=t.match(E);if(null!==e)return Y(e[1]);if(null!==(e=t.match(N)))return Y(e[1]);if(null!==(e=t.match(L))){var a=-1*Number(e[1]);return Y(a)}return null!==(e=t.match(A))?Y(e[1]):null},H=function(){var t=function(){if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;var t=Intl.DateTimeFormat();if(void 0===t||void 0===t.resolvedOptions)return null;var e=t.resolvedOptions().timeZone;return e?e.toLowerCase():null}();return null===t?"utc":t}(),$=Object.keys(V).reduce((function(t,e){var a=e.split("/")[1]||"";return t[a=a.replace(/_/g," ")]=e,t}),{}),B=function(t,e){if(!t)return H;var a=t.trim(),n=t.split("/");if(n.length>2&&!1===e.hasOwnProperty(a)&&(a=n[0]+"/"+n[1]),a=a.toLowerCase(),!0===e.hasOwnProperty(a))return a;if(a=function(t){return t=(t=(t=(t=(t=(t=t.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island")}(a),!0===e.hasOwnProperty(a))return a;if(!0===$.hasOwnProperty(a))return $[a];if(!0===/[0-9]/.test(a)){var r=I(a);if(r)return r}throw new Error("Spacetime: Cannot find timezone named: '"+t+"'. Please enter an IANA timezone id.")},F={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};F.date=F.day,F.month=25488e5,F.week=6048e5,F.year=3154e7,Object.keys(F).forEach((function(t){F[t+"s"]=F[t]}));var J=F,Q=function(t,e,a,n,r){var o=t.d[a]();if(o!==e){var i=null===r?null:t.d[r](),u=t.epoch,s=e-o;t.epoch+=J[n]*s,"day"===n&&Math.abs(s)>28&&e<28&&(t.epoch+=J.hour),null!==r&&i!==t.d[r]()&&(t.epoch=u);for(var c=J[n]/2;t.d[a]()e;)t.epoch-=c;null!==r&&i!==t.d[r]()&&(t.epoch=u)}},K={year:{valid:function(t){return t>-4e3&&t<4e3},walkTo:function(t,e){return Q(t,e,"getFullYear","year",null)}},month:{valid:function(t){return t>=0&&t<=11},walkTo:function(t,e){var a=t.d,n=a.getMonth(),r=t.epoch,o=a.getFullYear();if(n!==e){var i=e-n;for(t.epoch+=J.day*(28*i),o!==t.d.getFullYear()&&(t.epoch=r);t.d.getMonth()e;)t.epoch-=J.day}}},date:{valid:function(t){return t>0&&t<=31},walkTo:function(t,e){return Q(t,e,"getDate","day","getMonth")}},hour:{valid:function(t){return t>=0&&t<24},walkTo:function(t,e){return Q(t,e,"getHours","hour","getDate")}},minute:{valid:function(t){return t>=0&&t<60},walkTo:function(t,e){return Q(t,e,"getMinutes","minute","getHours")}},second:{valid:function(t){return t>=0&&t<60},walkTo:function(t,e){t.epoch=t.seconds(e).epoch}},millisecond:{valid:function(t){return t>=0&&t<1e3},walkTo:function(t,e){t.epoch=t.milliseconds(e).epoch}}},G=function(t,e){for(var a=Object.keys(K),n=t.clone(),r=0;r100&&(a/=100),(a*=-1)>=0&&(a="+"+a);var n="etc/gmt"+a;return t.timezones[n]&&(t.tz=n),t},at=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=(e=e.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==a){var n=Number(a[1]);if(n<0||n>24)return t.startOf("day");var r=Number(a[2]);if(a[2].length<2||r<0||r>59)return t.startOf("day");t=(t=(t=(t=t.hour(n)).minute(r)).seconds(a[3]||0)).millisecond(a[4]||0);var o=e.match(/[\b0-9](am|pm)\b/);return null!==o&&o[1]&&(t=t.ampm(o[1])),t}if(null!==(a=e.match(/([0-9]+) ?(am|pm)/))&&a[1]){var i=Number(a[1]);return i>12||i<1?t.startOf("day"):t=(t=(t=t.hour(a[1]||0)).ampm(a[2])).startOf("hour")}return t=t.startOf("day")},nt=[31,28,31,30,31,30,31,31,30,31,30,31],rt=O.isLeapYear,ot=function(t){if(!0!==nt.hasOwnProperty(t.month))return!1;if(1===t.month)return!!(rt(t.year)&&t.date<=29)||t.date<=28;var e=nt[t.month]||0;return t.date<=e},it=X(),ut=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,a=parseInt(t.trim(),10);return!a&&e&&(a=e.year),a=a||(new Date).getFullYear()},st=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/,parse:function(t,e,a,n){var r=parseInt(e[2],10)-1,o={year:e[1],month:r,date:e[3]};return!1===ot(o)?(t.epoch=null,t):(et(t,e[5]),G(t,o),t=at(t,e[4]))}},{reg:/^([0-9]{4})[\-\/]([0-9]{1,2})[\-\/]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a={year:e[1],month:parseInt(e[2],10)-1,date:parseInt(e[3],10)};return a.month>=12&&(a.date=parseInt(e[2],10),a.month=parseInt(e[3],10)-1),!1===ot(a)?(t.epoch=null,t):(G(t,a),t=at(t,e[4]))}},{reg:/^([0-9]{1,2})[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a=parseInt(e[1],10)-1,n=parseInt(e[2],10);(t.british||a>=12)&&(n=parseInt(e[1],10),a=parseInt(e[2],10)-1);var r={year:e[3]||(new Date).getFullYear(),month:a,date:n};return!1===ot(r)?(t.epoch=null,t):(G(t,r),t=at(t,e[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(t,e){var a=it[e[2].toLowerCase()],n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[1]||"")};return!1===ot(n)?(t.epoch=null,t):(G(t,n),t=at(t,e[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:function(t,e){var a=it[e[1].toLowerCase()],n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[2]||"")};return!1===ot(n)?(t.epoch=null,t):(G(t,n),t=at(t,e[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(t,e){var a=it[e[1].toLowerCase()],n={year:ut(e[2],t._today),month:a,date:t._today.date||1};return!1===ot(n)?(t.epoch=null,t):(G(t,n),t=at(t,e[4]))}},{reg:/^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a=it[e[2].toLowerCase()];if(!a)return null;var n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[1])};return!1===ot(n)?(t.epoch=null,t):(G(t,n),t=at(t,e[4]))}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:function(t,e){var a=e[0]||"";a=(a=a.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1")).replace(/,/g,"");var n=parseInt(a.trim(),10),r=new Date,o={year:n,month:r.getMonth(),date:r.getDate()};return!1===ot(o)?(t.epoch=null,t):(G(t,o),t=at(t))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:function(t,e){var a=e[0]||"";a=a.replace(/,/g,"");var n=parseInt(a.trim(),10),r=new Date,o={year:n,month:r.getMonth(),date:r.getDate()};return!1===ot(o)?(t.epoch=null,t):(G(t,o),t=at(t))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(t,e){var a=t._today,n=ut(e[0],a),r=new Date;a.month&&!a.date&&(a.date=1);var o={year:n,month:a.month||r.getMonth(),date:a.date||r.getDate()};return!1===ot(o)?(t.epoch=null,t):(G(t,o),t=at(t))}}],ct=function(t){return t.epoch=Date.now(),Object.keys(t._today||{}).forEach((function(e){"function"==typeof t[e]&&(t=t[e](t._today[e]))})),t},dt={now:function(t){return ct(t)},today:function(t){return ct(t)},tonight:function(t){return t=(t=ct(t)).hour(18)},tomorrow:function(t){return t=(t=(t=ct(t)).add(1,"day")).startOf("day")},yesterday:function(t){return t=(t=(t=ct(t)).subtract(1,"day")).startOf("day")},christmas:function(t){var e=ct(t).year();return t=t.set([e,11,25,18,0,0])},"new years":function(t){var e=ct(t).year();return t=t.set([e,11,31,18,0,0])}};dt["new years eve"]=dt["new years"];var lt=dt,ht={year:(new Date).getFullYear(),month:0,date:1},mt=function(t,e,a){e=Object.assign({},ht,a,e);for(var n=Object.keys(e),r=0;r0&&e<25e8&&!1===t.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),t.epoch=e,t;if(t.epoch=Date.now(),t._today&&O.isObject(t._today)&&Object.keys(t._today).length>0){var r=mt(t,n,ht);r.isValid()&&(t.epoch=r.epoch)}if(null==e||""===e)return t;if(!0===O.isDate(e))return t.epoch=e.getTime(),t;if(!0===O.isArray(e))return t=function(t,e,a){for(var n=["year","month","date","hour","minute","second","millisecond"],r=0;r=0?Math.floor(e):Math.ceil(e)),a?(e*=-1,e="-"+(e=O.zeroPad(e,2))):e="+"+(e=O.zeroPad(e,2)),"+00:00"===(e=e+":"+n)&&(e="Z"),e},kt={day:function(t){return O.titleCase(t.dayName())},"day-short":function(t){return O.titleCase(gt()[t.day()])},"day-number":function(t){return t.day()},"day-ordinal":function(t){return O.ordinal(t.day())},"day-pad":function(t){return O.zeroPad(t.day())},date:function(t){return t.date()},"date-ordinal":function(t){return O.ordinal(t.date())},"date-pad":function(t){return O.zeroPad(t.date())},month:function(t){return O.titleCase(t.monthName())},"month-short":function(t){return O.titleCase(W()[t.month()])},"month-number":function(t){return t.month()},"month-ordinal":function(t){return O.ordinal(t.month())},"month-pad":function(t){return O.zeroPad(t.month())},"iso-month":function(t){return O.zeroPad(t.month()+1)},year:function(t){var e=t.year();return e>0?e:(e=Math.abs(e),e+" BC")},"year-short":function(t){var e=t.year();return e>0?"'".concat(String(t.year()).substr(2,4)):(e=Math.abs(e))+" BC"},"iso-year":function(t){var e=t.year(),a=e<0,n=O.zeroPad(Math.abs(e),4);return a&&(n="-"+(n=O.zeroPad(n,6))),n},time:function(t){return t.time()},"time-24":function(t){return"".concat(t.hour24(),":").concat(O.zeroPad(t.minute()))},hour:function(t){return t.hour12()},"hour-pad":function(t){return O.zeroPad(t.hour12())},"hour-24":function(t){return t.hour24()},"hour-24-pad":function(t){return O.zeroPad(t.hour24())},minute:function(t){return t.minute()},"minute-pad":function(t){return O.zeroPad(t.minute())},second:function(t){return t.second()},"second-pad":function(t){return O.zeroPad(t.second())},ampm:function(t){return t.ampm()},quarter:function(t){return"Q"+t.quarter()},season:function(t){return t.season()},era:function(t){return t.era()},json:function(t){return t.json()},timezone:function(t){return t.timezone().name},offset:function(t){return wt(t)},numeric:function(t){return"".concat(t.year(),"/").concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()))},"numeric-us":function(t){return"".concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()),"/").concat(t.year())},"numeric-uk":function(t){return"".concat(O.zeroPad(t.date()),"/").concat(O.zeroPad(t.month()+1),"/").concat(t.year())},"mm/dd":function(t){return"".concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()))},iso:function(t){var e=t.format("iso-year"),a=O.zeroPad(t.month()+1),n=O.zeroPad(t.date()),r=O.zeroPad(t.h24()),o=O.zeroPad(t.minute()),i=O.zeroPad(t.second()),u=O.zeroPad(t.millisecond(),3),s=wt(t);return"".concat(e,"-").concat(a,"-").concat(n,"T").concat(r,":").concat(o,":").concat(i,".").concat(u).concat(s)},"iso-short":function(t){var e=O.zeroPad(t.month()+1),a=O.zeroPad(t.date());return"".concat(t.year(),"-").concat(e,"-").concat(a)},"iso-utc":function(t){return new Date(t.epoch).toISOString()},nice:function(t){return"".concat(W()[t.month()]," ").concat(O.ordinal(t.date()),", ").concat(t.time())},"nice-year":function(t){return"".concat(W()[t.month()]," ").concat(O.ordinal(t.date()),", ").concat(t.year())},"nice-day":function(t){return"".concat(gt()[t.day()]," ").concat(O.titleCase(W()[t.month()])," ").concat(O.ordinal(t.date()))},"nice-full":function(t){return"".concat(t.dayName()," ").concat(O.titleCase(t.monthName())," ").concat(O.ordinal(t.date()),", ").concat(t.time())}},Dt={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(Dt).forEach((function(t){return kt[t]=kt[Dt[t]]}));var zt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==t.isValid())return"";if(kt.hasOwnProperty(e)){var a=kt[e](t)||"";return"json"!==e&&(a=String(a),"ampm"!==e&&(a=O.titleCase(a))),a}if(-1!==e.indexOf("{")){var n=/\{(.+?)\}/g;return e=e.replace(n,(function(e,a){return a=a.toLowerCase().trim(),kt.hasOwnProperty(a)?String(kt[a](t)):""}))}return t.format("iso-short")},Ot=O.zeroPad,_t=O.formatTimezone,xt={G:function(t){return t.era()},GG:function(t){return t.era()},GGG:function(t){return t.era()},GGGG:function(t){return"AD"===t.era()?"Anno Domini":"Before Christ"},y:function(t){return t.year()},yy:function(t){return parseInt(String(t.year()).substr(2,4),10)},yyy:function(t){return t.year()},yyyy:function(t){return t.year()},yyyyy:function(t){return"0"+t.year()},Q:function(t){return t.quarter()},QQ:function(t){return t.quarter()},QQQ:function(t){return t.quarter()},QQQQ:function(t){return t.quarter()},M:function(t){return t.month()+1},MM:function(t){return Ot(t.month()+1)},MMM:function(t){return t.format("month-short")},MMMM:function(t){return t.format("month")},w:function(t){return t.week()},ww:function(t){return Ot(t.week())},d:function(t){return t.date()},dd:function(t){return Ot(t.date())},D:function(t){return t.dayOfYear()},DD:function(t){return Ot(t.dayOfYear())},DDD:function(t){return Ot(t.dayOfYear(),3)},E:function(t){return t.format("day-short")},EE:function(t){return t.format("day-short")},EEE:function(t){return t.format("day-short")},EEEE:function(t){return t.format("day")},EEEEE:function(t){return t.format("day")[0]},e:function(t){return t.day()},ee:function(t){return t.day()},eee:function(t){return t.format("day-short")},eeee:function(t){return t.format("day")},eeeee:function(t){return t.format("day")[0]},a:function(t){return t.ampm().toUpperCase()},aa:function(t){return t.ampm().toUpperCase()},aaa:function(t){return t.ampm().toUpperCase()},aaaa:function(t){return t.ampm().toUpperCase()},h:function(t){return t.h12()},hh:function(t){return Ot(t.h12())},H:function(t){return t.hour()},HH:function(t){return Ot(t.hour())},m:function(t){return t.minute()},mm:function(t){return Ot(t.minute())},s:function(t){return t.second()},ss:function(t){return Ot(t.second())},A:function(t){return t.epoch-t.startOf("day").epoch},z:function(t){return t.timezone().name},zz:function(t){return t.timezone().name},zzz:function(t){return t.timezone().name},zzzz:function(t){return t.timezone().name},Z:function(t){return _t(t.timezone().current.offset)},ZZ:function(t){return _t(t.timezone().current.offset)},ZZZ:function(t){return _t(t.timezone().current.offset)},ZZZZ:function(t){return _t(t.timezone().current.offset,":")}},jt=function(t,e,a){for(var n=t,r=e,o=0;o.5&&(t=t.add(1,e)),t=t.startOf(e)):!1===t.silent&&console.warn("no known unit '"+e+"'"),t},St=function(t,e,a){var n=0;for(t=t.clone();t.isBefore(e);)t=t.add(1,a),n+=1;return t.isAfter(e,a)&&(n-=1),n},Vt=function(t,e,a){return t.isBefore(e)?St(t,e,a):-1*St(e,t,a)},Et=function(t,e){var a=e.epoch-t.epoch,n={milliseconds:a,seconds:parseInt(a/1e3,10)};n.minutes=parseInt(n.seconds/60,10),n.hours=parseInt(n.minutes/60,10);var r=t.clone();return n.years=function(t,e){var a=e.year()-t.year();return(t=t.year(e.year())).isAfter(e)&&(a-=1),a}(r,e),r=t.add(n.years,"year"),n.months=12*n.years,r=t.add(n.months,"month"),n.months+=Vt(r,e,"month"),n.weeks=52*n.years,r=t.add(n.weeks,"week"),n.weeks+=Vt(r,e,"week"),n.days=7*n.weeks,r=t.add(n.days,"day"),n.days+=Vt(r,e,"day"),n},At=function(t,e,a){e=O.beADate(e,t);var n=!1;if(t.isAfter(e)){var r=t;t=e,e=r,n=!0}var o=Et(t,e);return n&&(o=function(t){return Object.keys(t).forEach((function(e){t[e]*=-1})),t}(o)),a?(a=O.normalize(a),!0!==/s$/.test(a)&&(a+="s"),"dates"===a&&(a="days"),o[a]):o},Nt={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function Lt(t,e){return 1===t&&(e=e.slice(0,-1)),t+" "+e}var Yt=function(t,e){var a,n,r,o=function(t,e){var a=t.isBefore(e),n=a?e:t,r=a?t:e;r=r.clone();var o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((function(t){if(!r.isSame(n,t)){var e=r.diff(n,t);r=r.add(e,t),o[t]=e}})),a&&Object.keys(o).forEach((function(t){0!==o[t]&&(o[t]*=-1)})),o}(t,e=O.beADate(e,t));if(!0===Object.keys(o).every((function(t){return!o[t]})))return{diff:o,rounded:"now",qualified:"now",precise:"now"};var i=[];return Object.keys(o).forEach((function(t,e,r){var u=Math.abs(o[t]);if(0!==u){var s=Lt(u,t);if(i.push(s),!a){if(a=n=s,e>4)return;var c=r[e+1],d=Math.abs(o[c]);d>Nt[c].almost?(a=Lt(u+1,t),n="almost "+a):d>Nt[c].over&&(n="over "+s)}}})),r=i.splice(0,2).join(", "),!0===t.isAfter(e)?(a+=" ago",n+=" ago",r+=" ago"):(a="in "+a,n="in "+n,r="in "+r),{diff:o,rounded:a,qualified:n,precise:r}},It={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},Ht=[null,[0,1],[3,1],[6,1],[9,1]],$t={minute:function(t){return G(t,{second:0,millisecond:0}),t},quarterhour:function(t){var e=t.minutes();return t=e>=45?t.minutes(45):e>=30?t.minutes(30):e>=15?t.minutes(15):t.minutes(0),G(t,{second:0,millisecond:0}),t},hour:function(t){return G(t,{minute:0,second:0,millisecond:0}),t},day:function(t){return G(t,{hour:0,minute:0,second:0,millisecond:0}),t},week:function(t){var e=t.clone();return(t=t.day(t._weekStart)).isAfter(e)&&(t=t.subtract(1,"week")),G(t,{hour:0,minute:0,second:0,millisecond:0}),t},month:function(t){return G(t,{date:1,hour:0,minute:0,second:0,millisecond:0}),t},quarter:function(t){var e=t.quarter();return Ht[e]&&G(t,{month:Ht[e][0],date:Ht[e][1],hour:0,minute:0,second:0,millisecond:0}),t},season:function(t){var e=t.season(),a="north";"South"===t.hemisphere()&&(a="south");for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2?arguments[2]:void 0;if(!e||!a)return[];if(e=O.normalize(e),a=t.clone().set(a),t.isAfter(a)){var n=t;t=a,a=n}var r=t.clone();Jt(e)?(r=r.next(e),e="week"):r=r.next(e);for(var o=[];r.isBefore(a);)o.push(r),r=r.add(1,e);return o},Kt=function(t){var e=t.timezones,a=t.tz;if(!1===e.hasOwnProperty(a)&&(a=B(t.tz,e)),null===a)return!1===t.silent&&console.warn("Warn: could not find given or local timezone - '"+t.tz+"'"),{current:{epochShift:0}};var n,r,o=e[a],i={name:(n=a,n=(n=(n=n[0].toUpperCase()+n.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(function(t){return t.toUpperCase()}))),hasDst:Boolean(o.dst),default_offset:o.offset,hemisphere:"s"===o.hem?"South":"North",current:{}};if(i.hasDst){var u=(r=o.dst)?r.split("->"):[];i.change={start:u[0],back:u[1]}}var s=o.offset,c=s;return!0===i.hasDst&&(c="North"===i.hemisphere?s-1:o.offset+1),!1===i.hasDst?(i.current.offset=s,i.current.isDST=!1):!0===x(t.epoch,i.change.start,i.change.back,s)?(i.current.offset=s,i.current.isDST="North"===i.hemisphere):(i.current.offset=c,i.current.isDST="South"===i.hemisphere),i},Gt=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Zt={set:function(t,e){var a=this.clone();return a=ft(a,t,null),e&&(this.tz=B(e)),a},timezone:function(){return Kt(this)},isDST:function(){return Kt(this).current.isDST},hasDST:function(){return Kt(this).hasDst},offset:function(){return 60*Kt(this).current.offset},hemisphere:function(){return Kt(this).hemisphere},format:function(t){return zt(this,t)},unixFmt:function(t){return Mt(this,t)},startOf:function(t){return Bt(this,t)},endOf:function(t){return Ft(this,t)},leapYear:function(){var t=this.year();return O.isLeapYear(t)},progress:function(t){return Pt(this,t)},nearest:function(t){return Ct(this,t)},diff:function(t,e){return At(this,t,e)},since:function(t){return t||(t=this.clone().set()),Yt(this,t)},next:function(t){return this.add(1,t).startOf(t)},last:function(t){return this.subtract(1,t).startOf(t)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(t){var e=this.clone();return e.tz=B(t,e.timezones),e},every:function(t,e){return Qt(this,t,e)},isAwake:function(){var t=this.hour();return!(t<8||t>22)},isAsleep:function(){return!this.isAwake()},log:function(){return console.log(""),console.log(zt(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(zt(this,"full-short")),this},json:function(){var t=this;return Gt.reduce((function(e,a){return e[a]=t[a](),e}),{})},debug:function(){var t=this.timezone(),e=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return e+="\n - "+this.format("time"),console.log("\n\n",e+"\n - "+t.name+" ("+t.current.offset+")"),this},from:function(t){return(t=this.clone().set(t)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(t){if("number"==typeof t)return this._weekStart=t,this;if("string"==typeof t){t=t.toLowerCase().trim();var e=gt().indexOf(t);-1===e&&(e=vt().indexOf(t)),-1===e&&(e=1),this._weekStart=e}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",t);return this}};Zt.inDST=Zt.isDST,Zt.round=Zt.nearest,Zt.each=Zt.every;var Rt=Zt,Wt=O.isLeapYear,Ut=function(t){return"string"==typeof t&&(t=parseInt(t,10)),t},Xt=["year","month","date","hour","minute","second","millisecond"],te=function(t,e,a){for(var n=Xt.indexOf(a),r=Xt.slice(n,Xt.length),o=0;o=24?e=24:e<0&&(e=0);var a=t.clone(),n=(t.hour()-e)*J.hour;return t.epoch-=n,G(t,{hour:e}),te(t,a,"minute"),t.epoch},oe=function(t,e){var a=e.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/);if(!a){if(!(a=e.match(/([0-9]{1,2})(am|pm)/)))return t.epoch;a.splice(2,0,"0")}var n=!1,r=parseInt(a[1],10),o=parseInt(a[2],10);return r>12&&(n=!0),!1===n&&("am"===a[3]&&12===r&&(r=0),"pm"===a[3]&&r<12&&(r+=12)),(t=(t=(t=(t=t.hour(r)).minute(o)).second(0)).millisecond(0)).epoch},ie=function(t,e){if((e=Ut(e))>28){var a=t.month(),n=nt[a];1===a&&29===e&&Wt(t.year())&&(n=29),e>n&&(e=n)}return e<=0&&(e=1),G(t,{date:e}),t.epoch},ue=function(t,e){"string"==typeof e&&(e=X()[e.toLowerCase()]),(e=Ut(e))>=12&&(e=11),e<=0&&(e=0);var a=t.date();return a>nt[e]&&(a=nt[e]),G(t,{month:e,date:a}),t.epoch},se=function(t,e){return e=Ut(e),G(t,{year:e}),t.epoch},ce=function(t,e){e=Ut(e);var a=t.clone();return(e-=1)<=0?e=0:e>=365&&(e=364),t=(t=t.startOf("year")).add(e,"day"),te(t,a,"hour"),t.epoch},de={millisecond:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ee(e,t),e}return this.d.getMilliseconds()},second:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ae(e,t),e}return this.d.getSeconds()},minute:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ne(e,t),e}return this.d.getMinutes()},hour:function(t){var e=this.d;if(void 0!==t){var a=this.clone();return a.epoch=re(a,t),a}return e.getHours()},hourFloat:function(t){if(void 0!==t){var e=this.clone(),a=t%1;a*=60;var n=parseInt(t,10);return e.epoch=re(e,n),e.epoch=ne(e,a),e}var r=this.d,o=r.getHours(),i=r.getMinutes();return o+(i/=60)},hour12:function(t){var e=this.d;if(void 0!==t){var a=this.clone(),n=(t=""+t).match(/^([0-9]+)(am|pm)$/);if(n){var r=parseInt(n[1],10);"pm"===n[2]&&(r+=12),a.epoch=re(a,r)}return a}var o=e.getHours();return o>12&&(o-=12),0===o&&(o=12),o},time:function(t){if(void 0!==t){var e=this.clone();return e.epoch=oe(e,t),e}return"".concat(this.h12(),":").concat(O.zeroPad(this.minute())).concat(this.ampm())},ampm:function(t){var e="am",a=this.hour();if(a>=12&&(e="pm"),"string"!=typeof t)return e;var n=this.clone();return t=t.toLowerCase().trim(),a>=12&&"am"===t?(a-=12,n.hour(a)):a<12&&"pm"===t?(a+=12,n.hour(a)):n},dayTime:function(t){if(void 0!==t){var e={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"},a=this.clone();return t=(t=t||"").toLowerCase(),!0===e.hasOwnProperty(t)&&(a=a.time(e[t])),a}var n=this.hour();return n<6?"night":n<12?"morning":n<17?"afternoon":n<22?"evening":"night"},iso:function(t){return void 0!==t?this.set(t):this.format("iso")}},le={date:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ie(e,t),e}return this.d.getDate()},day:function(t){if(void 0===t)return this.d.getDay();var e=this.clone(),a=t;"string"==typeof t&&(t=t.toLowerCase(),-1===(a=gt().indexOf(t))&&(a=vt().indexOf(t)));var n=this.d.getDay(),r=n-a,o=this.subtract(24*r,"hours");return G(o,{hour:e.hour(),minute:e.minute(),second:e.second()}),o},dayName:function(t){if(void 0===t)return vt()[this.day()];var e=this.clone();return e=e.day(t)},month:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ue(e,t),e}return this.d.getMonth()}},he=function(t){return t=(t=(t=t.minute(0)).second(0)).millisecond(1)},me={dayOfYear:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ce(e,t),e}for(var a,n=0,r=this.d.getMonth(),o=1;o<=r;o++)(a=new Date).setDate(1),a.setFullYear(this.d.getFullYear()),a.setHours(1),a.setMinutes(1),a.setMonth(o),a.setHours(-2),n+=a.getDate();return n+this.d.getDate()},week:function(t){if(void 0!==t){var e=this.clone();return e=(e=(e=e.month(0)).date(1)).day("monday"),"december"===(e=he(e)).monthName()&&(e=e.add(1,"week")),t-=1,e=e.add(t,"weeks")}var a=this.clone();a=(a=a.month(0)).date(1),"december"===(a=(a=he(a)).day("monday")).monthName()&&(a=a.add(1,"week"));var n=1;1===a.date()&&(n=0),a=a.minus(1,"second");var r=this.epoch;if(a.epoch>r)return 1;var o=0,i=4*this.month();for(a.epoch+=J.week*i,o+=i;o<52;o++){if(a.epoch>r)return o+n;a=a.add(1,"week")}return 52},monthName:function(t){if(void 0===t)return U()[this.month()];var e=this.clone();return e=e.month(t)},quarter:function(t){if(void 0!==t&&("string"==typeof t&&(t=t.replace(/^q/i,""),t=parseInt(t,10)),Ht[t])){var e=this.clone(),a=Ht[t][0];return e=(e=(e=e.month(a)).date(1)).startOf("day")}for(var n=this.d.getMonth(),r=1;r=It[e][o][1]&&r0&&(e.epoch=se(e,-1*a)),"ad"===t&&a<0&&(e.epoch=se(e,-1*a)),e}return this.d.getFullYear()<0?"BC":"AD"},decade:function(t){if(void 0!==t){if(!(t=(t=(t=String(t)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===t.length&&/[0-9][0-9]/.test(t)&&(t="19"+t);var e=Number(t);return isNaN(e)?this:(e=10*Math.floor(e/10),this.year(e))}return this.startOf("decade").year()},century:function(t){if(void 0!==t){"string"==typeof t&&(t=(t=(t=t.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,(function(t,e,a){return a.match(/b\.?c\.?/i)&&(e="-"+e),e}))).replace(/c$/,""));var e=Number(t);return isNaN(t)?(console.warn("Spacetime: Invalid century input"),this):(0===e&&(e=1),e=e>=0?100*(e-1):100*(e+1),this.year(e))}var a=this.startOf("century").year();return(a=Math.floor(a/100))<0?a-1:a+1},millenium:function(t){if(void 0!==t){if("string"==typeof t&&(t=t.replace(/([0-9])(th|rd|st|nd)/,"$1"),t=Number(t),isNaN(t)))return console.warn("Spacetime: Invalid millenium input"),this;t>0&&(t-=1);var e=1e3*t;return 0===e&&(e=1),this.year(e)}var a=Math.floor(this.year()/1e3);return a>=0&&(a+=1),a}},fe=Object.assign({},de,le,me);fe.milliseconds=fe.millisecond,fe.seconds=fe.second,fe.minutes=fe.minute,fe.hours=fe.hour,fe.hour24=fe.hour,fe.h12=fe.hour12,fe.h24=fe.hour24,fe.days=fe.day;var ye=function(t){Object.keys(fe).forEach((function(e){t.prototype[e]=fe[e]}))},pe=O.isLeapYear,ge=function(t,e){return 1===t&&pe(e)?29:nt[t]},ve=function(t,e){if(t.month>0){var a=parseInt(t.month/12,10);t.year=e.year()+a,t.month=t.month%12}else if(t.month<0){var n=Math.floor(Math.abs(t.month)/13,10);n=Math.abs(n)+1,t.year=e.year()-n,t.month=t.month%12,t.month=t.month+12,12===t.month&&(t.month=0)}return t},be=function(t,e,a){for(var n=e.year(),r=e.month(),o=ge(r,n);a>o;)a-=o,(r+=1)>=12&&(r-=12,n+=1),o=ge(r,n);return t.month=r,t.date=a,t},we=function(t,e,a){t.year=e.year(),t.month=e.month();var n=e.date();for(t.date=n-Math.abs(a);t.date<1;){t.month-=1,t.month<0&&(t.month=11,t.year-=1);var r=ge(t.month,t.year);t.date+=r}return t},ke=["millisecond","second","minute","hour","date","month"],De={second:ke.slice(0,1),minute:ke.slice(0,2),quarterhour:ke.slice(0,2),hour:ke.slice(0,3),date:ke.slice(0,4),month:ke.slice(0,4),quarter:ke.slice(0,4),season:ke.slice(0,4),year:ke,decade:ke,century:ke};De.week=De.hour,De.season=De.date,De.quarter=De.date;var ze={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},Oe={month:!0,quarter:!0,season:!0,year:!0},_e=function(t){t.prototype.add=function(t,e){var a=this.clone();if(!e||0===t)return a;var n=this.clone();e=O.normalize(e),J[e]?a.epoch+=J[e]*t:"week"===e?a.epoch+=J.day*(7*t):"quarter"===e||"season"===e||"season"===e?a.epoch+=J.month*(4*t):"quarterhour"===e&&(a.epoch+=15*J.minute*t);var r={};if(De[e]&&De[e].forEach((function(t){r[t]=n[t]()})),ze[e]){var o=n.timezone().current.offset-a.timezone().current.offset;a.epoch+=3600*o*1e3}if("month"===e&&(r.month=n.month()+t,r=ve(r,n)),"week"===e){var i=n.date()+7*t;i<=28&&i>1&&(r.date=i)}else if("date"===e){if(t<0)r=we(r,n,t);else{var u=n.date()+t;r=be(r,n,u)}0!==t&&n.isSame(a,"day")&&(r.date=n.date()+t)}else"year"===e&&a.year()===n.year()?a.epoch+=J.week:"decade"===e?r.year=a.year()+10:"century"===e&&(r.year=a.year()+100);if(Oe[e]){var s=nt[r.month];r.date=n.date(),r.date>s&&(r.date=s)}return G(a,r),a},t.prototype.subtract=function(t,e){return this.clone().add(-1*t,e)},t.prototype.minus=t.prototype.subtract,t.prototype.plus=t.prototype.add},xe={millisecond:function(t){return t.epoch},second:function(t){return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second()].join("-")},minute:function(t){return[t.year(),t.month(),t.date(),t.hour(),t.minute()].join("-")},hour:function(t){return[t.year(),t.month(),t.date(),t.hour()].join("-")},day:function(t){return[t.year(),t.month(),t.date()].join("-")},week:function(t){return[t.year(),t.week()].join("-")},month:function(t){return[t.year(),t.month()].join("-")},quarter:function(t){return[t.year(),t.quarter()].join("-")},year:function(t){return t.year()}};xe.date=xe.day;var je=function(t){t.prototype.isSame=function(e,a){return a?("string"!=typeof e&&"number"!=typeof e||(e=new t(e,this.timezone.name)),a=a.replace(/s$/,""),xe[a]?xe[a](this)===xe[a](e):null):null}},Me=function(t){var e={isAfter:function(t){t=O.beADate(t,this);var e=O.getEpoch(t);return null===e?null:this.epoch>e},isBefore:function(t){t=O.beADate(t,this);var e=O.getEpoch(t);return null===e?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];t=O.beADate(t,this),e=O.beADate(e,this);var n=O.getEpoch(t);if(null===n)return null;var r=O.getEpoch(e);return null===r?null:a?this.isBetween(t,e)||this.isEqual(t)||this.isEqual(e):n2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=B(e,qe),this.silent=a.silent||!0,this.british=a.dmy||a.british,this._weekStart=1,void 0!==a.weekStart&&(this._weekStart=a.weekStart),this._today={},void 0!==a.today&&(this._today=a.today),Object.defineProperty(this,"d",{get:function(){var t=j(this),e=(new Date(this.epoch).getTimezoneOffset()||0)+60*t;e=60*e*1e3;var a=this.epoch+e;return new Date(a)}}),Object.defineProperty(this,"timezones",{get:function(){return qe},set:function(t){return qe=t,t}});var n=ft(this,t,e);this.epoch=n.epoch};Object.keys(Rt).forEach((function(t){Pe.prototype[t]=Rt[t]})),Pe.prototype.clone=function(){return new Pe(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today})},Pe.prototype.toLocalDate=function(){return new Date(this.epoch)},ye(Pe),_e(Pe),je(Pe),Me(Pe),Te(Pe);var Ce=Pe,Se=function(t,e){var a=new Ce(null),n=new Ce(null);a=a.time(t),n=e?n.time(e):a.add(59,"minutes");var r=a.hour(),o=n.hour();return Object.keys(a.timezones).filter((function(t){if(-1===t.indexOf("/"))return!1;var e=new Ce(null,t),i=e.hour();return i>=r&&i<=o&&(!(i===r&&e.minute()n.minute()))}))},Ve=function(t,e,a){return new Ce(t,e,a)},Ee=function(t){var e=t._today||{};return Object.keys(e).forEach((function(a){t=t[a](e[a])})),t};Ve.now=function(t,e){var a=new Ce((new Date).getTime(),t,e);return a=Ee(a)},Ve.today=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ee(a)).startOf("day")},Ve.tomorrow=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ee(a)).add(1,"day").startOf("day")},Ve.yesterday=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ee(a)).subtract(1,"day").startOf("day")},Ve.extend=function(t){return Object.keys(t).forEach((function(e){Ce.prototype[e]=t[e]})),this},Ve.whereIts=Se,Ve.version="6.6.3",Ve.plugin=Ve.extend;var Ae=Ve;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var Ne=function(t){return t&&t.default||t}(Object.freeze({__proto__:null,default:Ae})),Le="America/",Ye="Asia/",Ie="Europe/",He="Africa/",$e="Australia/",Be="Pacific/",Fe={"british summer time":Ie+"London",bst:Ie+"London","british time":Ie+"London","britain time":Ie+"London","irish summer time":Ie+"Dublin","irish time":Ie+"Dublin",ireland:Ie+"Dublin","central european time":Ie+"Berlin",cet:Ie+"Berlin","central european summer time":Ie+"Berlin",cest:Ie+"Berlin","central europe":Ie+"Berlin","eastern european time":Ie+"Riga",eet:Ie+"Riga","eastern european summer time":Ie+"Riga",eest:Ie+"Riga","eastern europe time":Ie+"Riga","western european time":Ie+"Lisbon","western european summer time":Ie+"Lisbon","western europe":Ie+"Lisbon","turkey standard time":Ie+"Istanbul",trt:Ie+"Istanbul","turkish time":Ie+"Istanbul",etc:He+"Freetown",utc:He+"Freetown","greenwich standard time":He+"Freetown",gmt:He+"Freetown","east africa time":He+"Nairobi","east african time":He+"Nairobi","eastern africa time":He+"Nairobi","central africa time":He+"Khartoum","central african time":He+"Khartoum","south africa standard time":He+"Johannesburg",sast:He+"Johannesburg","southern africa":He+"Johannesburg","south african":He+"Johannesburg","west africa standard time":He+"Lagos","western africa time":He+"Lagos","west african time":He+"Lagos","australian central standard time":$e+"Adelaide",acst:$e+"Adelaide","australian central daylight time":$e+"Adelaide",acdt:$e+"Adelaide","australia central":$e+"Adelaide","australian eastern standard time":$e+"Brisbane",aest:$e+"Brisbane","australian eastern daylight time":$e+"Brisbane",aedt:$e+"Brisbane","australia east":$e+"Brisbane","australian western standard time":$e+"Perth",awst:$e+"Perth","australian western daylight time":$e+"Perth",awdt:$e+"Perth","australia west":$e+"Perth","australian central western standard time":$e+"Eucla",acwst:$e+"Eucla","australia central west":$e+"Eucla","lord howe standard time":$e+"Lord_Howe",lhst:$e+"Lord_Howe","lord howe daylight time":$e+"Lord_Howe",lhdt:$e+"Lord_Howe","russian standard time":Ie+"Moscow",msk:Ie+"Moscow",russian:Ie+"Moscow","central standard time":Le+"Chicago","central time":Le+"Chicago",cst:Le+"Havana","central daylight time":Le+"Chicago",cdt:Le+"Havana","mountain standard time":Le+"Denver","mountain time":Le+"Denver",mst:Le+"Denver","mountain daylight time":Le+"Denver",mdt:Le+"Denver","atlantic standard time":Le+"Halifax","atlantic time":Le+"Halifax",ast:Ye+"Baghdad","atlantic daylight time":Le+"Halifax",adt:Le+"Halifax","eastern standard time":Le+"New_York","eastern time":Le+"New_York",est:Le+"New_York","eastern daylight time":Le+"New_York",edt:Le+"New_York","pacific time":Le+"Los_Angeles","pacific standard time":Le+"Los_Angeles",pst:Le+"Los_Angeles","pacific daylight time":Le+"Los_Angeles",pdt:Le+"Los_Angeles","alaskan standard time":Le+"Anchorage","alaskan time":Le+"Anchorage",ahst:Le+"Anchorage","alaskan daylight time":Le+"Anchorage",ahdt:Le+"Anchorage","hawaiian standard time":Be+"Honolulu","hawaiian time":Be+"Honolulu",hst:Be+"Honolulu","aleutian time":Be+"Honolulu","hawaii time":Be+"Honolulu","newfoundland standard time":Le+"St_Johns","newfoundland time":Le+"St_Johns",nst:Le+"St_Johns","newfoundland daylight time":Le+"St_Johns",ndt:Le+"St_Johns","brazil time":Le+"Sao_Paulo",brt:Le+"Sao_Paulo","brasília":Le+"Sao_Paulo",brasilia:Le+"Sao_Paulo","brazilian time":Le+"Sao_Paulo","argentina time":Le+"Buenos_Aires","argentinian time":Le+"Buenos_Aires","amazon time":Le+"Manaus",amt:Le+"Manaus","amazonian time":Le+"Manaus","easter island standard time":"Chile/Easterisland",east:"Chile/Easterisland","easter island summer time":"Chile/Easterisland",easst:"Chile/Easterisland","venezuelan standard time":Le+"Caracas","venezuelan time":Le+"Caracas",vet:Le+"Caracas","venezuela time":Le+"Caracas","paraguay time":Le+"Asuncion",pyt:Le+"Asuncion","paraguay summer time":Le+"Asuncion",pyst:Le+"Asuncion","cuba standard time":Le+"Havana","cuba time":Le+"Havana","cuba daylight time":Le+"Havana","cuban time":Le+"Havana","bolivia time":Le+"La_Paz","bolivian time":Le+"La_Paz","colombia time":Le+"Bogota",cot:Le+"Bogota","colombian time":Le+"Bogota","acre time":Le+"Eirunepe","peru time":Le+"Lima","chile standard time":Le+"Punta_Arenas","chile time":Le+"Punta_Arenas",clst:Le+"Punta_Arenas","chile summer time":Le+"Punta_Arenas",cldt:Le+"Punta_Arenas","uruguay time":Le+"Montevideo",uyt:Le+"Montevideo",ist:Ye+"Jerusalem","arabic standard time":Ye+"Baghdad","arabic time":Ye+"Baghdad","arab time":Ye+"Baghdad","iran standard time":Ye+"Tehran","iran time":Ye+"Tehran",irst:Ye+"Tehran","iran daylight time":Ye+"Tehran",irdt:Ye+"Tehran",iranian:Ye+"Tehran","pakistan standard time":Ye+"Karachi","pakistan time":Ye+"Karachi",pkt:Ye+"Karachi","india standard time":Ye+"Kolkata","indian time":Ye+"Kolkata","indochina time":Ye+"Bangkok",ict:Ye+"Bangkok","south east asia":Ye+"Bangkok","china standard time":Ye+"Shanghai",ct:Ye+"Shanghai","chinese time":Ye+"Shanghai","alma-ata time":Ye+"Almaty",almt:Ye+"Almaty","oral time":Ye+"Oral","orat time":Ye+"Oral","yakutsk time":Ye+"Yakutsk",yakt:Ye+"Yakutsk","gulf standard time":Ye+"Dubai","gulf time":Ye+"Dubai",gst:Ye+"Dubai",uae:Ye+"Dubai","hong kong time":Ye+"Hong_Kong",hkt:Ye+"Hong_Kong","western indonesian time":Ye+"Jakarta",wib:Ye+"Jakarta","indonesia time":Ye+"Jakarta","central indonesian time":Ye+"Makassar",wita:Ye+"Makassar","israel daylight time":Ye+"Jerusalem",idt:Ye+"Jerusalem","israel standard time":Ye+"Jerusalem","israel time":Ye+"Jerusalem",israeli:Ye+"Jerusalem","krasnoyarsk time":Ye+"Krasnoyarsk",krat:Ye+"Krasnoyarsk","malaysia time":Ye+"Kuala_Lumpur",myt:Ye+"Kuala_Lumpur","singapore time":Ye+"Singapore",sgt:Ye+"Singapore","korea standard time":Ye+"Seoul","korea time":Ye+"Seoul",kst:Ye+"Seoul","korean time":Ye+"Seoul","uzbekistan time":Ye+"Samarkand",uzt:Ye+"Samarkand","vladivostok time":Ye+"Vladivostok",vlat:Ye+"Vladivostok","maldives time":"Indian/Maldives",mvt:"Indian/Maldives","mauritius time":"Indian/Mauritius",mut:"Indian/Mauritius","marshall islands time":Be+"Kwajalein",mht:Be+"Kwajalein","samoa standard time":Be+"Midway",sst:Be+"Midway","somoan time":Be+"Midway","chamorro standard time":Be+"Guam",chst:Be+"Guam","papua new guinea time":Be+"Bougainville",pgt:Be+"Bougainville"},Je=Ne().timezones,Qe=Object.keys(Je).reduce((function(t,e){return t[e]=e,t}),{}),Ke=Object.assign({},Fe,Qe),Ge={};[[["weekday","summer","winter","autumn","some day","one day","all day","some point","eod","eom","standard time","daylight time"],"#Date"],[["centuries","century","day","days","decade","decades","hour","hours","millisecond","milliseconds","minute","minutes","month","months","seconds","week","weeks","year","years"],"#Duration"],[["all hallows eve","all saints day","all sts day","april fools","armistice day","australia day","bastille day","boxing day","canada day","christmas eve","christmas","cinco de mayo","day of the dead","dia de muertos","dieciseis de septiembre","emancipation day","grito de dolores","groundhog day","halloween","harvey milk day","inauguration day","independence day","independents day","juneteenth","labour day","national freedom day","national nurses day","new years eve","new years","purple heart day","rememberance day","rosa parks day","saint andrews day","saint patricks day","saint stephens day","saint valentines day","st andrews day","st patricks day","st stephens day","st valentines day ","valentines day","valentines","veterans day","victoria day","womens equality day","xmas","epiphany","orthodox christmas day","orthodox new year","assumption of mary","all souls day","feast of the immaculate conception","feast of our lady of guadalupe","kwanzaa","imbolc","beltaine","lughnassadh","samhain","martin luther king day","mlk day","presidents day","mardi gras","tax day","commonwealth day","mothers day","memorial day","fathers day","columbus day","indigenous peoples day","canadian thanksgiving","election day","thanksgiving","t-day","turkey day","black friday","cyber monday","ash wednesday","palm sunday","maundy thursday","good friday","holy saturday","easter","easter sunday","easter monday","orthodox good friday","orthodox holy saturday","orthodox easter","orthodox easter monday","ascension day","pentecost","whitsunday","whit sunday","whit monday","trinity sunday","corpus christi","advent","tu bishvat","tu bshevat","purim","passover","yom hashoah","lag baomer","shavuot","tisha bav","rosh hashana","yom kippur","sukkot","shmini atzeret","simchat torah","chanukah","hanukkah","isra and miraj","lailat al-qadr","eid al-fitr","id al-Fitr","eid ul-Fitr","ramadan","eid al-adha","muharram","the prophets birthday","ostara","march equinox","vernal equinox","litha","june solistice","summer solistice","mabon","september equinox","fall equinox","autumnal equinox","yule","december solstice","winter solstice","chinese new year","diwali"],"#Holiday"],[["noon","midnight","now","morning","tonight","evening","afternoon","night","breakfast time","lunchtime","dinnertime","sometime","eod","oclock","oclock","all day","at night"],"#Time"],[Object.keys(Ke),"#Timezone"]].forEach((function(t){for(var e=0;e-13&&t<13?"Etc/GMT"+(t=((t*=-1)>0?"+":"")+t):null},ua=function(t){var e=t.match("#Timezone+"),a=(e=e.remove("(in|for|by|near|at)")).text("reduced");if(t.remove("#Timezone+"),Ke.hasOwnProperty(a))return Ke[a];var n=function(t){var e=t.match(aa);if(null!==e)return ia(e[1]);if(null!==(e=t.match(ra)))return ia(e[1]);if(null!==(e=t.match(oa))){var a=-1*Number(e[1]);return ia(a)}return null!==(e=t.match(na))?ia(e[1]):null}(a);return n||null},sa=function(){function t(a,n,r){e(this,t),this.unit=n||"day";var o={};(r=r||{}).today&&(o={date:r.today.date(),month:r.today.month(),year:r.today.year()});var i=Ne(a,r.timezone,{today:o});i.isValid()&&(i=i.startOf(this.unit)),Object.defineProperty(this,"d",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"context",{enumerable:!1,writable:!0,value:r})}return n(t,[{key:"clone",value:function(){return new t(this.d,this.unit,this.context)}},{key:"log",value:function(){return console.log("--"),this.d.log(),console.log("\n"),this}},{key:"applyShift",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).forEach((function(a){t.d=t.d.add(e[a],a)})),this}},{key:"applyTime",value:function(t){return this.d=t?this.d.time(t):this.d.startOf("day"),this}},{key:"format",value:function(t){return this.d.format(t)}},{key:"start",value:function(){return this.d=this.d.startOf(this.unit),this}},{key:"end",value:function(){return this.d=this.d.endOf(this.unit),this}},{key:"before",value:function(){return this.d=Ne.now(this.context.timezone,{today:this.context.today}),this}},{key:"after",value:function(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}},{key:"next",value:function(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}},{key:"last",value:function(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf(this.unit),this}}]),t}(),ca={Unit:sa,Day:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="day",i}return n}(sa),Month:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="month",i}return n}(sa),Quarter:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="quarter",i}return n}(sa),Year:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="year",i}return n}(sa),WeekDay:function(t){r(o,t);var a=s(o);function o(t,n,r){var i;return e(this,o),(i=a.call(this,t,n,r)).unit="week",i.d=Ne(r.today,r.timezone),i.d=i.d.day(t),i.weekDay=i.d.dayName(),i.d.date()0&&(n=new da(e.today,null,e))),n},ha={week:ca.Week,month:ca.Month,quarter:ca.Quarter,year:ca.Year,season:ca.Season},ma=function(t,e){var a=t.match("(weekday|week|month|quarter|season|year)");if(!0===a.found){var n=a.lastTerm().text("reduced");if(ha.hasOwnProperty(n)){var r=ha[n];return r?new r(null,n,e):null}}if(!0===(a=t.match("(monday|tuesday|wednesday|thursday|friday|saturday|sunday)")).found){var o=a.lastTerm().text("reduced");return new ca.WeekDay(o,null,e)}return null},fa=function(t,e,a){return t(a={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&a.path)}},a.exports),a.exports}((function(t,e){t.exports=function(t){t=t&&t.hasOwnProperty("default")?t.default:t;var e="january",a="february",n="april",r="may",o="july",i="august",u="september",s="october",c="november",d="december",l={"new years eve":[d,31],"new years":[e,1],"new years day":[e,1],"inauguration day":[e,20],"australia day":[e,26],"national freedom day":[a,1],"groundhog day":[a,2],"rosa parks day":[a,4],"valentines day":[a,14],"saint valentines day":[a,14],"st valentines day ":[a,14],"saint patricks day":["march",17],"st patricks day":["march",17],"april fools":[n,1],"april fools day":[n,1],"emancipation day":[n,16],"tax day":[n,15],"labour day":[r,1],"cinco de mayo":[r,5],"national nurses day":[r,6],"harvey milk day":[r,22],"victoria day":[r,24],juneteenth:["june",19],"canada day":[o,1],"independence day":[o,4],"independents day":[o,4],"bastille day":[o,14],"purple heart day":[i,7],"womens equality day":[i,26],"16 de septiembre":[u,16],"dieciseis de septiembre":[u,16],"grito de dolores":[u,16],halloween:[s,31],"all hallows eve":[s,31],"day of the dead":[s,31],"dia de muertos":[s,31],"veterans day":[c,11],"st andrews day":[c,30],"saint andrews day":[c,30],"all saints day":[c,1],"all sts day":[c,1],"armistice day":[c,11],"rememberance day":[c,11],"christmas eve":[d,24],christmas:[d,25],xmas:[d,25],"boxing day":[d,26],"st stephens day":[d,26],"saint stephens day":[d,26],epiphany:[e,6],"orthodox christmas day":[e,7],"orthodox new year":[e,14],"assumption of mary":[i,15],"all souls day":[c,2],"feast of the immaculate conception":[d,8],"feast of our lady of guadalupe":[d,12],kwanzaa:[d,26],imbolc:[a,2],beltaine:[r,1],lughnassadh:[i,1],samhain:[s,31]},h=function(e,a,n){if(l.hasOwnProperty(e)||l.hasOwnProperty(a)){var r=l[e]||l[a]||[],o=t.now();if((o=(o=(o=(o=o.year(n)).startOf("year")).month(r[0])).date(r[1])).isValid())return o}return null},m="monday",f={"martin luther king day":[3,m,"january"],"presidents day":[3,m,"february"],"commonwealth day":[2,m,"march"],"mothers day":[2,"sunday","may"],"fathers day":[3,"sunday","june"],"labor day":[1,m,"september"],"columbus day":[2,m,"october"],"canadian thanksgiving":[2,m,"october"],thanksgiving:[4,"thursday","november"],"black friday":[4,"friday","november"]};f["turday day"]=f.thanksgiving,f["indigenous peoples day"]=f["columbus day"],f["mlk day"]=f["martin luther king day"];var y=f,p=function(e,a,n){if(y.hasOwnProperty(e)||y.hasOwnProperty(a)){var r=y[e]||y[a]||[],o=t.now(),i=(o=(o=(o=o.year(n)).month(r[2])).startOf("month")).month();if((o=o.day(r[1])).month()!==i&&(o=o.add(1,"week")),r[0]>1&&(o=o.add(r[0]-1,"week")),o.isValid())return o}return null},g={easter:0,"ash wednesday":-46,"palm sunday":7,"maundy thursday":-3,"good friday":-2,"holy saturday":-1,"easter saturday":-1,"easter monday":1,"ascension day":39,"whit sunday":49,"whit monday":50,"trinity sunday":65,"corpus christi":60,"mardi gras":-47};g["easter sunday"]=g.easter,g.pentecost=g["whit sunday"],g.whitsun=g["whit sunday"];var v=g,b=function(t){var e=Math.floor,a=t%19,n=e(t/100),r=(n-e(n/4)-e((8*n+13)/25)+19*a+15)%30,o=r-e(r/28)*(1-e(29/(r+1))*e((21-a)/11)),i=o-(t+e(t/4)+o+2-n+e(n/4))%7,u=3+e((i+40)/44),s=i+28-31*e(u/4);return(u=4===u?"April":"March")+" "+s},w=function(e,a,n){if(v.hasOwnProperty(e)||v.hasOwnProperty(a)){var r=v[e]||v[a]||[],o=b(n);if(!o)return null;var i=t(o),u=(i=i.year(n)).add(r,"day");if(u.isValid())return u}return null},k={spring:[2003,2007,2044,2048,2052,2056,2060,2064,2068,2072,2076,2077,2080,2081,2084,2085,2088,2089,2092,2093,2096,2097],summer:[2021,2016,2020,2024,2028,2032,2036,2040,2041,2044,2045,2048,2049,2052,2053,2056,2057,2060,2061,2064,2065,2068,2069,2070,2072,2073,2074,2076,2077,2078,2080,2081,2082,2084,2085,2086,2088,2089,2090,2092,2093,2094,2096,2097,2098,2099],fall:[2002,2003,2004,2006,2007,2010,2011,2014,2015,2018,2019,2022,2023,2026,2027,2031,2035,2039,2043,2047,2051,2055,2059,2092,2096],winter:[2002,2003,2006,2007,2011,2015,2019,2023,2027,2031,2035,2039,2043,2080,2084,2088,2092,2096]},D=[2080,2084,2088,2092,2096],z=function(t){var e={spring:"March 20 "+t,summer:"June 21 "+t,fall:"Sept 22 "+t,winter:"Dec 21 "+t};return-1!==k.spring.indexOf(t)&&(e.spring="March 19 "+t),-1!==k.summer.indexOf(t)&&(e.summer="June 20 "+t),-1!==k.fall.indexOf(t)&&(e.fall="Sept 21 "+t),-1!==k.winter.indexOf(t)&&(e.winter="Dec 22 "+t),-1!==D.indexOf(t)&&(e.winter="Dec 20 "+t),e},O={"spring equinox":"spring","summer solistice":"summer","fall equinox":"fall","winter solstice":"winter"};O["march equinox"]=O["spring equinox"],O["vernal equinox"]=O["spring equinox"],O.ostara=O["spring equinox"],O["june solstice"]=O["summer solistice"],O.litha=O["summer solistice"],O["autumn equinox"]=O["fall equinox"],O["autumnal equinox"]=O["fall equinox"],O["september equinox"]=O["fall equinox"],O["sept equinox"]=O["fall equinox"],O.mabon=O["fall equinox"],O["december solstice"]=O["winter solistice"],O["dec solstice"]=O["winter solistice"],O.yule=O["winter solistice"];var _=O,x=function(e,a,n){if(_.hasOwnProperty(e)||_.hasOwnProperty(a)){var r=_[e]||_[a],o=z(n);if(!r||!o||!o[r])return null;var i=t(o[r]);if(i.isValid())return i}return null},j={"isra and miraj":"april 13","lailat al-qadr":"june 10","eid al-fitr":"june 15","id al-Fitr":"june 15","eid ul-Fitr":"june 15",ramadan:"may 16","eid al-adha":"sep 22",muharram:"sep 12","prophets birthday":"nov 21"},M=function(e,a,n){if(j.hasOwnProperty(e)||j.hasOwnProperty(a)){var r=j[e]||j[a]||[];if(!r)return null;var o=t(r+" 2018"),i=-10.64*(n-2018);if((o=(o=(o=o.add(i,"day")).startOf("day")).year(n)).isValid())return o}return null},T=t.now().year();return function(t,e){e=e||T,t=t||"";var a=(t=(t=(t=String(t)).trim().toLowerCase()).replace(/'s/,"s")).replace(/ day$/,"");a=(a=a.replace(/^the /,"")).replace(/^orthodox /,"");var n=h(t,a,e);return null!==n||null!==(n=p(t,a,e))||null!==(n=w(t,a,e))||null!==(n=x(t,a,e))||null!==(n=M(t,a,e))?n:null}}(Ne)})),ya=ca.CalendarDate,pa=function(t,e){var a=null,n=t.match("#Holiday+").text("reduced"),r=fa(n,2020);return null!==r&&(a=new ya(r,null,e)),a},ga=ca.Unit,va=ca.Day,ba=ca.CalendarDate,wa=ca.Month,ka={today:function(t){return new va(t.today,null,t)},yesterday:function(t){return new va(t.today.minus(1,"day"),null,t)},tomorrow:function(t){return new va(t.today.plus(1,"day"),null,t)}},Da={shift:Ue,time:ta,relative:ea,timezone:ua},za={implied:la,duration:ma,holiday:pa,explicit:function(t,e){var a=e.today.year(),n=t.match("[#Value] of? [#Month] [#Year]");if(n.found||(n=t.match("[#Month] the? [#Value] [#Year]")),n.found){var r={month:n.groups("month").text(),date:n.groups("date").text(),year:n.groups("year").text()||a},o=new ba(r,null,e);if(!0===o.d.isValid())return o}if((n=t.match("[#Month] of? [#Year]")).found){var i={month:n.groups("month").text(),year:n.groups("year").text()||a},u=new wa(i,null,e);if(!0===u.d.isValid())return u}if((n=t.match("[#Value] of? [#Month]")).found||(n=t.match("[#Month] the? [#Value]")),n.found){var s={month:n.groups("month").text(),date:n.groups("date").text(),year:e.today.year()},c=new ba(s,null,e);if(!0===c.d.isValid())return c}if(t.has("#Month")){var d={month:t.match("#Month").text(),date:1,year:e.today.year()},l=new ba(d,null,e);if(!0===l.d.isValid())return l}if((n=t.match("the [#Value]")).found){var h={month:e.today.month(),date:n.groups("date").text(),year:e.today.year()},m=new ba(h,null,e);if(!0===m.d.isValid())return m}var f=t.text("reduced");if(!0===ka.hasOwnProperty(f))return ka[f](e);var y=new ga(f,null,e);return!1===y.d.isValid()?null:y}},Oa=function(e,a){var n=Da.shift(e),r=Da.timezone(e),o=Da.time(e,a),i=Da.relative(e);if(r){var u=(a=Object.assign({},a,{timezone:r})).today.format("iso-short");a.today=a.today.goto(a.timezone).set(u)}var s=null;return s=(s=(s=(s=s||za.implied(e,a,{shift:n,time:o,rel:i}))||za.duration(e,a))||za.holiday(e,a))||za.explicit(e,a),void 0!==("undefined"==typeof process?"undefined":t(process))&&process&&process.env.DEBUG&&(console.log("\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-"),console.log(" shift: ".concat(JSON.stringify(n))),console.log(" rel: ".concat(i||"-")),console.log(" time: ".concat(o||"-")),console.log("\n str: '".concat(e.text(),"'")),console.log("\n ",s),console.log("=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n")),s?("last"===i&&s.last(),"next"===i&&s.next(),n&&s.applyShift(n),s.applyTime(o),s):null},_a=function(t,e){return t=t.applyShift(e.casual_duration)},xa=function(t,e){var a=t.match("between [*] and [*]");if(a.found){var n=a.groups("start");n=Oa(n,e);var r=a.groups("end");if(r=Oa(r,e),n)return{start:n,end:r}}if((a=t.match("[#Month #Value] to [#Month #Value] [#Year?]")).found){var o=a.groups(),i=o.from;if(o.year&&(i=i.concat(o.year)),i=Oa(i,e)){var u=o.to;return o.year&&(u=u.concat(o.year)),{start:i,end:u=Oa(u,e)}}}if((a=t.match("[#Month] [#Value] to [#Value] of? [#Year]")).found){var s=a.groups(),c=s.month.concat(s.from,s.year);if(c=Oa(c,e)){var d=s.month.concat(s.to,s.year);return{start:c,end:d=Oa(d,e)}}}if((a=t.match("[#Value] to [#Value of? #Month of? #Year]")).found){var l=a.groups("to");if(l=Oa(l,e)){var h=a.groups("to"),m=l.clone();return m.d=m.d.date(h.text("normal")),{start:m,end:l}}}if((a=t.match("[#Value] to [#Value of? #Month]")).found){var f=a.groups("to");if(f=Oa(f,e)){var y=a.groups("from"),p=f.clone();return p.d=p.d.date(y.text("normal")),{start:p,end:f}}}if((a=t.match("[#Month #Value] to [#Value]")).found){var g=a.groups("from");if(g=Oa(g,e)){var v=a.groups("to"),b=g.clone();return b.d=b.d.date(v.text("normal")),{start:g,end:b}}}if((a=t.match("from? [*] (to|@hasHyphen|until|upto) [*]")).found){var w=a.groups("from"),k=a.groups("to");if(w=Oa(w,e),k=Oa(k,e),w&&k)return{start:w,end:k}}if((a=t.match("^due (by|before|on|in)? [*]",0)).found){var D=Oa(a,e);if(D)return{start:new sa(e.today,null,e),end:_a(D.clone(),e)}}if((a=t.match("^(after|following|from) [*]",0)).found){var z=Oa(a,e);if(z)return{start:z,end:_a(z.clone(),e)}}if((a=t.match("^(on|during|in) [*]",0)).found){var O=Oa(a,e);if(O)return{start:O,end:O.clone().end()}}var _=Oa(t,e);return{start:_,end:_.clone().end()}},ja=function(t,e){return(e=e||{}).timezone=e.timezone||"ETC/UTC",e.today=Ne(e.today||null,e.timezone),t=Re(t),xa(t,e)},Ma=[["mon","monday"],["tue","tuesday"],["tues","tuesday"],["wed","wednesday"],["thu","thursday"],["thurs","thursday"],["fri","friday"],["sat","saturday"],["sun","sunday"],["jan","january"],["feb","february"],["mar","march"],["apr","april"],["jun","june"],["jul","july"],["aug","august"],["sep","september"],["sept","september"],["oct","october"],["nov","november"],["dec","december"]],Ta=Ma=Ma.map((function(t){return{short:t[0],long:t[1]}})),qa={json:function(t){var e=this,a=null;"number"==typeof t&&(a=t,t=null);var n=[],r=(t=t||{terms:!1}).format||"iso";return this.forEach((function(a){var o=a.json(t)[0],i=ja(a,e.context),u=i.start?i.start.format(r):null,s=i.end?i.end.format(r):null;o.date={start:u,end:s},u&&s&&(o.date.duration=i.start.d.diff(i.end.d),delete o.date.duration.milliseconds,delete o.date.duration.seconds),n.push(o)})),null!==a?n[a]:n},format:function(t){var e=this;return this.forEach((function(a){var n=ja(a,e.context),r="";if(n.start){if(r=n.start.format(t),n.end){var o=n.start.format(t);r!==o&&(r+=" to "+o)}a.replaceWith(r,{keepTags:!0,keepCase:!1})}})),this},toLongForm:function(){var t=this;return Ta.forEach((function(e){t.replace(e.short,e.long,!0)})),this},toShortForm:function(){var t=this;return Ta.forEach((function(e){t.replace(e.long,e.short,!0)})),this}};return function(a,n){n.addTags(D),n.addWords(Ze),n.postProcess(k);var o=function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).context={casual_duration:{weeks:2}},i}return n}(a);Object.assign(o.prototype,qa),a.prototype.dates=function(e){var a={};e&&"object"===t(e)&&(a=e,e=null);var n=this.clauses().match("#Date+");"number"==typeof e&&(n=n.get(e)),"number"==typeof e&&(n=n.get(e));var r=new o(n.list,this,this.world);return a.today&&(a.today=Ne(a.today,a.timezone)),r.context=a,r}}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).compromiseDates=e()}(this,(function(){"use strict";function t(e){return(t="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})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var a=0;a1e3&&n<3e3&&t.tag("Year",e)}}},f="date-values",y="date-tagger",p="section-tagger",g="time-tagger",v="shift-tagger",b="fix-tagger",w=[function(t){t.match("in the (night|evening|morning|afternoon|day|daytime)").tag("Time","in-the-night"),t.match("(#Value|#Time) (am|pm)").tag("Time","value-ampm");var e=t.if("#Month");!0===e.found&&(e.match("#Month #Date+").tag("Date","correction-numberRange"),e.match("#Value of #Month").tag("Date","value-of-month"),e.match("#Cardinal #Month").tag("Date","cardinal-month"),e.match("#Month #Value to #Value").tag("Date","value-to-value"),e.match("#Month the #Value").tag("Date","month-the-value"));var a=t.if("#Value");if(!0===a.found){a.match("(#WeekDay|#Month) #Value").ifNo("#Money").tag("Date","date-value"),a.match("#Value (#WeekDay|#Month)").ifNo("#Money").tag("Date","value-date"),a.match("#TextValue #TextValue").if("#Date").tag("#Date","textvalue-date");var n=a.if("#Duration");!0===n.found&&(n.match("for #Value #Duration").tag("Date","for-x-duration"),n.match("#Value #Duration #Conjunction").tag("Date","val-duration-conjunction"),n.match("".concat(c,"? #Value #Duration")).tag("Date","value-duration"),n.match("#Value #Duration old").unTag("Date","val-years-old"))}var r=t.if(l);!0===r.found&&(r.match("".concat(c,"? ").concat(d," ").concat(l)).tag("Date","thisNext-season"),r.match("the? ".concat(h," of ").concat(l)).tag("Date","section-season"),r.match("".concat(l," ").concat(c,"? #Cardinal")).tag("Date","season-year"));var o=t.if("#Date");!0===o.found&&(o.match("#Date the? #Ordinal").tag("Date","correction"),o.match("".concat(d," #Date")).tag("Date","thisNext"),o.match("due? (by|before|after|until) #Date").tag("Date","by"),o.match("(last|next|this|previous|current|upcoming|coming|the) #Date").tag("Date","next-feb"),o.match("the? ".concat(h," of #Date")).tag("Date","section-of"),o.match("#Ordinal #Duration in #Date").tag("Date","duration-in"),o.match("(early|late) (at|in)? the? #Date").tag("Time","early-evening"),o.match("#Date (by|before|after|at|@|about) #Cardinal").not("^#Date").tag("Time","date-before-Cardinal"),o.match("#Date [(am|pm)]",0).unTag("Verb").unTag("Copula").tag("Time","date-am"),o.match("#Date (#Preposition|to) #Date").ifNo("#Duration").tag("Date","date-prep-date"));var i=t.if("#Cardinal");if(!0===i.found){var u=i.match("#Date #Value [#Cardinal]",0);m(u,"date-value-year"),u=i.match("#Date+ [#Cardinal]",0),m(u,"date-year"),u=i.match("#Month #Value [#Cardinal]",0),m(u,"month-value-year"),u=i.match("#Month #Value to #Value [#Cardinal]",0),m(u,"month-range-year"),u=i.match("(in|of|by|during|before|starting|ending|for|year) [#Cardinal]",0),m(u,"in-year"),u=i.match("(q1|q2|q3|q4) [#Cardinal]",0),m(u,"in-year"),u=i.match("#Ordinal quarter [#Cardinal]",0),m(u,"in-year"),u=i.match("the year [#Cardinal]",0),m(u,"in-year"),function(t,e){if(!0===t.found){var a=t.termList()[0];if(a){var n=parseInt(a.clean,10);n&&n>1900&&n<2030&&t.tag("Year",e)}}}(u=i.match("it (is|was) [#Cardinal]",0),"in-year")}var s=t.if("#Time");return!0===s.found&&(s.match("(by|before|after|at|@|about) #Time").tag("Time","preposition-time"),s.match("#Cardinal #Time").not("#Year").tag("Time","value-time"),s.match("#Time [(eastern|pacific|central|mountain)]",0).tag("Date","timezone"),s.match("#Time [(est|pst|gmt)]",0).tag("Date","timezone abbr")),t},function(t){return t.has("once [a] #Duration")||t.match("[a] #Duration",0).replaceWith("1").tag("Cardinal",f),t.has("#Value")&&(t.match("#Month #Value to #Value of? #Year?").tag("Date",f),t.match("#Value to #Value of? #Month #Year?").tag("Date",f),t.match("#Value #Duration of #Date").tag("Date",f),t.match("#Value+ #Duration (after|before|into|later|afterwards|ago)?").tag("Date",f),t.match("#Value #Date").tag("Date",f),t.match("#Date #Value").tag("Date",f),t.match("#Date #Preposition #Value").tag("Date",f),t.match("#Date (after|before|during|on|in) #Value").tag("Date",f),t.match("#Value (year|month|week|day) and a half").tag("Date",f),t.match("#Value and a half (years|months|weeks|days)").tag("Date",f),t.match("on the #Ordinal").tag("Date",f)),t},function(t){return t.match("(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)").match("#Noun").tag("Season",y),t.match("(q1|q2|q3|q4)").tag("FinancialQuarter",y),t.match("(this|next|last|current) quarter").tag("FinancialQuarter",y),t.match("(this|next|last|current) season").tag("Season",y),t.has("#Date")&&(t.match("#Date #Preposition #Date").tag("Date",y),t.match("(once|twice) (a|an|each) #Date").tag("Date",y),t.match("(by|until|on|in|at|during|over|every|each|due) the? #Date").tag("Date",y),t.match("#Date+").tag("Date",y),t.match("(by|until|on|in|at|during|over|every|each|due) the? #Date").tag("Date",y),t.match("a #Duration").tag("Date",y),t.match("(between|from) #Date").tag("Date",y),t.match("(to|until|upto) #Date").tag("Date",y),t.match("#Date and #Date").tag("Date",y),t.match("(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)").tag("Date",y),t.match("the? #Date after next one?").tag("Date",y),t.match("(about|approx|approximately|around) #Date").tag("Date",y)),t},function(t){return t.has("#Date")&&(t.match("this? (last|next|past|this|previous|current|upcoming|coming|the) #Date").tag("Date",p),t.match("(starting|beginning|ending) #Date").tag("Date",p),t.match("the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)").tag("Date",p),t.match("(the|this) #Date").tag("Date",p)),t},function(t){return t.has("#Cardinal")&&!t.has("#Month")&&t.match("(half|quarter|25|15|10|5) (past|after|to) #Cardinal").tag("Time",g),t.has("#Date")&&(t.match("#Noun (standard|daylight|central|mountain)? time").tag("Timezone",g),t.match("/^utc[+-][0-9]/").tag("Timezone",g),t.match("/^gmt[+-][0-9]/").tag("Timezone",g),t.match("(in|for|by|near|at) #Timezone").tag("Timezone",g)),t},function(t){return t.has("#Date")&&(t.match("#Cardinal #Duration (before|after|ago|from)").tag("#DateShift",v),t.match("in #Cardinal #Duration").tag("#DateShift",v),t.match("#Cardinal #Duration and? #DateShift").tag("#DateShift",v),t.match("#DateShift and #Cardinal #Duration").tag("#DateShift",v)),t},function(t){if(t.has("#Date")){var e=t.match("#Date+ by #Date+");e.found&&!e.has("^due")&&e.match("^#Date+").unTag("Date","by-monday");var a=t.match("#Date+");a.match("^day$").unTag("Date","spa-day"),a.match("(in|of|by|for)? (#Possessive && #Date)").unTag("Date","tomorrows meeting");var n="(yesterday|today|tomorrow)";a.has(n)&&(a.match("".concat(n," [#Value]$")).unTag("Date","yesterday-7"),a.match("^[#Value] ".concat(n,"$"),0).unTag("Date","7 yesterday"),a.match("#WeekDay+ ".concat(n,"$")).unTag("Date").lastTerm().tag("Date","fri-yesterday"),a.match("(this|last|next) #Date ".concat(n,"$")).unTag("Date").lastTerm().tag("Date","this month yesterday")),a.match("on #Cardinal$").unTag("Date",b),a.match("this tomorrow").terms(0).unTag("Date","this-tomorrow"),a.match("(q1|q2|q3|q4) #Year").tag("Date",b),a.match("^#Value (this|next|last)").terms(0).unTag("Date",b),a.has("(last|this|next)")&&(a.match("(last|this|next) #Duration #Value").terms(2).unTag("Date",b),a.match("!#Month #Value (last|this|next) #Date").terms(0).unTag("Date",b)),!1===a.has("(#Year|#Time|#TextValue|#NumberRange)")&&a.match("(#Month|#WeekDay) #Value #Value").terms(2).unTag("Date",b),a.has("^between")&&!a.has("and .")&&a.unTag("Date",b),!a.has("#Month #Month")||a.has("@hasHyphen")||a.has("@hasComma")||a.match("#Month").lastTerm().unTag("Date","month-month"),a.has("(minutes|seconds|weeks|hours|days|months)")&&!a.has("#Value #Duration")&&a.match("(minutes|seconds|weeks|hours|days|months)").unTag("Date","log-hours"),a.has("about #Holiday")&&a.match("about").unTag("#Date","about-thanksgiving"),a.match("(from|by|before) now").unTag("Time")}return t}],k=function(t){return w.forEach((function(e){return e(t)})),t},D={FinancialQuarter:{isA:"Date"},Season:{isA:"Date"},Year:{isA:["Date"],notA:"RomanNumeral"},Duration:{isA:["Date","Noun"]},Holiday:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"]},DateShift:{isA:["Date"]}};var z,O=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){e.isLeapYear=function(t){return t%4==0&&t%100!=0||t%400==0},e.isDate=function(t){return"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(t.valueOf())},e.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)},e.isObject=function(t){return"[object Object]"===Object.prototype.toString.call(t)},e.zeroPad=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,a="0";return(t+="").length>=e?t:new Array(e-t.length+1).join(a)+t},e.titleCase=function(t){return t?t[0].toUpperCase()+t.substr(1):""},e.ordinal=function(t){var e=t%10,a=t%100;return 1===e&&11!==a?t+"st":2===e&&12!==a?t+"nd":3===e&&13!==a?t+"rd":t+"th"},e.toCardinal=function(t){return t=(t=String(t)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(t,10)},e.normalize=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(t=(t=(t=(t=t.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))?"date":t},e.getEpoch=function(t){return"number"==typeof t?t:e.isDate(t)?t.getTime():t.epoch?t.epoch:null},e.beADate=function(t,a){return!1===e.isObject(t)?a.clone().set(t):t},e.formatTimezone=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=Math.abs(t),r=t>0?"+":"-";return"".concat(r).concat(e.zeroPad(n)).concat(a,"00")}})),_=(O.isLeapYear,O.isDate,O.isArray,O.isObject,O.zeroPad,O.titleCase,O.ordinal,O.toCardinal,O.normalize,O.getEpoch,O.beADate,O.formatTimezone,O.zeroPad),x=function(t,e,a,n){var r=new Date(t),o=(r.getTimezoneOffset()||0)+60*n;o=60*o*1e3;var i=function(t){return _(t.getMonth()+1)+"/"+_(t.getDate())+":"+_(t.getHours())}(r=new Date(t+o));return i>=e&&i");return!0===x(t.epoch,r[0],r[1],a)?a:n},M=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"],T=(z=Object.freeze({__proto__:null,default:{"9|s":"2/dili,2/jayapura","9|n":"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau","9.5|s|04/05:03->10/04:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s":"12/casey,2/kuala_lumpur,2/makassar,2/singapore,4/perth,4/west","8|n|03/25:03->09/29:23":"2/ulan_bator","8|n":"2/brunei,2/choibalsan,2/chongqing,2/chungking,2/harbin,2/hong_kong,2/irkutsk,2/kuching,2/macao,2/macau,2/manila,2/shanghai,2/taipei,2/ujung_pandang,2/ulaanbaatar","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/ho_chi_minh,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dacca,2/dhaka,2/kashgar,2/omsk,2/qyzylorda,2/thimbu,2/thimphu,2/urumqi,9/chagos","6.5|n":"2/rangoon,2/yangon,9/cocos","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/ashkhabad,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives","5.75|n":"2/kathmandu,2/katmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/21:00->09/20:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/29:03->10/25:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/nicosia,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye","3|n|03/29:02->10/25:03":"8/chisinau,8/tiraspol","3|n|03/29:00->10/24:24":"2/beirut","3|n|03/27:02->10/25:02":"2/jerusalem,2/tel_aviv","3|n|03/27:00->10/31:01":"2/gaza,2/hebron","3|n|03/27:00->10/30:01":"2/amman","3|n|03/27:00->10/29:24":"2/damascus","3|n":"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/istanbul,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte","2|s|03/29:02->10/25:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/29:02->10/25:03":"0/ceuta,arctic/longyearbyen,3/jan_mayen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s|04/02:01->09/03:03":"0/windhoek","1|s":"0/kinshasa,0/luanda","1|n|04/19:03->05/31:02":"0/casablanca,0/el_aaiun","1|n|03/29:01->10/25:02":"3/canary,3/faeroe,3/faroe,3/madeira,8/belfast,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london","1|n":"0/algiers,0/bangui,0/brazzaville,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/05:04->09/27:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/05:03->09/27:02":"12/mcmurdo,12/south_pole,11/auckland","12|s|01/12:03->11/08:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/05:03->04/05:02":"11/chatham","11|s":"12/macquarie,11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape","11.5|n|04/05:03->10/04:02":"11/norfolk","10|s|04/05:03->10/04:02":"4/act,4/canberra,4/currie,4/hobart,4/melbourne,4/nsw,4/sydney,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/chuuk,11/guam,11/port_moresby,11/saipan,11/truk,11/yap","10.5|s|04/05:01->10/04:02":"4/lhi,4/lord_howe","0|n|03/29:00->10/25:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,0/timbuktu,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/gmt+0,13/gmt-0,13/gmt0,13/greenwich,13/utc,13/universal,13/zulu","-9|n|03/08:02->11/01:02":"1/adak,1/atka","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/08:02->11/01:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat","-8|n":"11/pitcairn","-7|n|03/08:02->11/01:02":"1/dawson,1/ensenada,1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/whitehorse,6/pacific,6/yukon,10/bajanorte","-7|n":"1/creston,1/dawson_creek,1/hermosillo,1/phoenix","-6|s|04/04:22->09/05:22":"7/easterisland,11/easter","-6|n|04/05:02->10/25:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/08:02->11/01:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/shiprock,1/yellowknife,6/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,6/east-saskatchewan,6/saskatchewan,11/galapagos","-5|s":"1/lima,1/rio_branco,5/acre","-5|n|04/05:02->10/25:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n|03/08:02->11/01:02":"1/chicago,1/knox_in,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,6/central","-5|n":"1/atikokan,1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/porto_acre","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/04:24->09/06:00":"1/santiago,7/continental","-4|s|03/21:24->10/04:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n|03/08:02->11/01:02":"1/detroit,1/fort_wayne,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,6/eastern","-4|n|03/08:00->11/01:01":"1/havana","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/cordoba,1/fortaleza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,5/east","-3|n|03/08:02->11/01:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/catamarca,1/cayenne,1/jujuy,1/maceio,1/mendoza,1/paramaribo,1/recife,1/rosario,1/santarem","-2|s":"5/denoronha","-2|n|03/28:22->10/24:23":"1/godthab","-2|n|03/08:02->11/01:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia","-2.5|n|03/08:02->11/01:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti"}}))&&z.default||z,q={};Object.keys(T).forEach((function(t){var e=t.split("|"),a={offset:Number(e[0]),hem:e[1]};e[2]&&(a.dst=e[2]),T[t].split(",").forEach((function(t){t=t.replace(/(^[0-9]+)\//,(function(t,e){return e=Number(e),M[e]+"/"})),q[t]=a}))})),q.utc={offset:0,hem:"n"};for(var P=-14;P<=14;P+=.5){var C=P;C>0&&(C="+"+C);var S="etc/gmt"+C;q[S]={offset:-1*P,hem:"n"},q[S="utc/gmt"+C]={offset:-1*P,hem:"n"}}var V=q,A=/(\-?[0-9]+)h(rs)?/i,E=/(\-?[0-9]+)/,N=/utc([\-+]?[0-9]+)/i,L=/gmt([\-+]?[0-9]+)/i,Y=function(t){return(t=Number(t))>-13&&t<13?"etc/gmt"+(t=((t*=-1)>0?"+":"")+t):null},I=function(t){var e=t.match(A);if(null!==e)return Y(e[1]);if(null!==(e=t.match(N)))return Y(e[1]);if(null!==(e=t.match(L))){var a=-1*Number(e[1]);return Y(a)}return null!==(e=t.match(E))?Y(e[1]):null},$=function(){var t=function(){if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;var t=Intl.DateTimeFormat();if(void 0===t||void 0===t.resolvedOptions)return null;var e=t.resolvedOptions().timeZone;return e?e.toLowerCase():null}();return null===t?"utc":t}(),H=Object.keys(V).reduce((function(t,e){var a=e.split("/")[1]||"";return t[a=a.replace(/_/g," ")]=e,t}),{}),B=function(t,e){if(!t)return $;var a=t.trim(),n=t.split("/");if(n.length>2&&!1===e.hasOwnProperty(a)&&(a=n[0]+"/"+n[1]),a=a.toLowerCase(),!0===e.hasOwnProperty(a))return a;if(a=function(t){return t=(t=(t=(t=(t=(t=t.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island")}(a),!0===e.hasOwnProperty(a))return a;if(!0===H.hasOwnProperty(a))return H[a];if(!0===/[0-9]/.test(a)){var r=I(a);if(r)return r}throw new Error("Spacetime: Cannot find timezone named: '"+t+"'. Please enter an IANA timezone id.")},F={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};F.date=F.day,F.month=25488e5,F.week=6048e5,F.year=3154e7,Object.keys(F).forEach((function(t){F[t+"s"]=F[t]}));var J=F,Q=function(t,e,a,n,r){var o=t.d[a]();if(o!==e){var i=null===r?null:t.d[r](),u=t.epoch,s=e-o;t.epoch+=J[n]*s,"day"===n&&Math.abs(s)>28&&e<28&&(t.epoch+=J.hour),null!==r&&i!==t.d[r]()&&(t.epoch=u);for(var c=J[n]/2;t.d[a]()e;)t.epoch-=c;null!==r&&i!==t.d[r]()&&(t.epoch=u)}},K={year:{valid:function(t){return t>-4e3&&t<4e3},walkTo:function(t,e){return Q(t,e,"getFullYear","year",null)}},month:{valid:function(t){return t>=0&&t<=11},walkTo:function(t,e){var a=t.d,n=a.getMonth(),r=t.epoch,o=a.getFullYear();if(n!==e){var i=e-n;for(t.epoch+=J.day*(28*i),o!==t.d.getFullYear()&&(t.epoch=r);t.d.getMonth()e;)t.epoch-=J.day}}},date:{valid:function(t){return t>0&&t<=31},walkTo:function(t,e){return Q(t,e,"getDate","day","getMonth")}},hour:{valid:function(t){return t>=0&&t<24},walkTo:function(t,e){return Q(t,e,"getHours","hour","getDate")}},minute:{valid:function(t){return t>=0&&t<60},walkTo:function(t,e){return Q(t,e,"getMinutes","minute","getHours")}},second:{valid:function(t){return t>=0&&t<60},walkTo:function(t,e){t.epoch=t.seconds(e).epoch}},millisecond:{valid:function(t){return t>=0&&t<1e3},walkTo:function(t,e){t.epoch=t.milliseconds(e).epoch}}},Z=function(t,e){for(var a=Object.keys(K),n=t.clone(),r=0;r100&&(a/=100),(a*=-1)>=0&&(a="+"+a);var n="etc/gmt"+a;return t.timezones[n]&&(t.tz=n),t},at=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=(e=e.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==a){var n=Number(a[1]);if(n<0||n>24)return t.startOf("day");var r=Number(a[2]);if(a[2].length<2||r<0||r>59)return t.startOf("day");t=(t=(t=(t=t.hour(n)).minute(r)).seconds(a[3]||0)).millisecond(a[4]||0);var o=e.match(/[\b0-9](am|pm)\b/);return null!==o&&o[1]&&(t=t.ampm(o[1])),t}if(null!==(a=e.match(/([0-9]+) ?(am|pm)/))&&a[1]){var i=Number(a[1]);return i>12||i<1?t.startOf("day"):t=(t=(t=t.hour(a[1]||0)).ampm(a[2])).startOf("hour")}return t=t.startOf("day")},nt=[31,28,31,30,31,30,31,31,30,31,30,31],rt=O.isLeapYear,ot=function(t){if(!0!==nt.hasOwnProperty(t.month))return!1;if(1===t.month)return!!(rt(t.year)&&t.date<=29)||t.date<=28;var e=nt[t.month]||0;return t.date<=e},it=X(),ut=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,a=parseInt(t.trim(),10);return!a&&e&&(a=e.year),a=a||(new Date).getFullYear()},st=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/,parse:function(t,e,a,n){var r=parseInt(e[2],10)-1,o={year:e[1],month:r,date:e[3]};return!1===ot(o)?(t.epoch=null,t):(et(t,e[5]),Z(t,o),t=at(t,e[4]))}},{reg:/^([0-9]{4})[\-\/]([0-9]{1,2})[\-\/]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a={year:e[1],month:parseInt(e[2],10)-1,date:parseInt(e[3],10)};return a.month>=12&&(a.date=parseInt(e[2],10),a.month=parseInt(e[3],10)-1),!1===ot(a)?(t.epoch=null,t):(Z(t,a),t=at(t,e[4]))}},{reg:/^([0-9]{1,2})[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a=parseInt(e[1],10)-1,n=parseInt(e[2],10);(t.british||a>=12)&&(n=parseInt(e[1],10),a=parseInt(e[2],10)-1);var r={year:e[3]||(new Date).getFullYear(),month:a,date:n};return!1===ot(r)?(t.epoch=null,t):(Z(t,r),t=at(t,e[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(t,e){var a=it[e[2].toLowerCase()],n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[1]||"")};return!1===ot(n)?(t.epoch=null,t):(Z(t,n),t=at(t,e[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:function(t,e){var a=it[e[1].toLowerCase()],n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[2]||"")};return!1===ot(n)?(t.epoch=null,t):(Z(t,n),t=at(t,e[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(t,e){var a=it[e[1].toLowerCase()],n={year:ut(e[2],t._today),month:a,date:t._today.date||1};return!1===ot(n)?(t.epoch=null,t):(Z(t,n),t=at(t,e[4]))}},{reg:/^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(t,e){var a=it[e[2].toLowerCase()];if(!a)return null;var n={year:ut(e[3],t._today),month:a,date:O.toCardinal(e[1])};return!1===ot(n)?(t.epoch=null,t):(Z(t,n),t=at(t,e[4]))}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:function(t,e){var a=e[0]||"";a=(a=a.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1")).replace(/,/g,"");var n=parseInt(a.trim(),10),r=new Date,o={year:n,month:r.getMonth(),date:r.getDate()};return!1===ot(o)?(t.epoch=null,t):(Z(t,o),t=at(t))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:function(t,e){var a=e[0]||"";a=a.replace(/,/g,"");var n=parseInt(a.trim(),10),r=new Date,o={year:n,month:r.getMonth(),date:r.getDate()};return!1===ot(o)?(t.epoch=null,t):(Z(t,o),t=at(t))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(t,e){var a=t._today,n=ut(e[0],a),r=new Date;a.month&&!a.date&&(a.date=1);var o={year:n,month:a.month||r.getMonth(),date:a.date||r.getDate()};return!1===ot(o)?(t.epoch=null,t):(Z(t,o),t=at(t))}}],ct=function(t){return t.epoch=Date.now(),Object.keys(t._today||{}).forEach((function(e){"function"==typeof t[e]&&(t=t[e](t._today[e]))})),t},dt={now:function(t){return ct(t)},today:function(t){return ct(t)},tonight:function(t){return t=(t=ct(t)).hour(18)},tomorrow:function(t){return t=(t=(t=ct(t)).add(1,"day")).startOf("day")},yesterday:function(t){return t=(t=(t=ct(t)).subtract(1,"day")).startOf("day")},christmas:function(t){var e=ct(t).year();return t=t.set([e,11,25,18,0,0])},"new years":function(t){var e=ct(t).year();return t=t.set([e,11,31,18,0,0])}};dt["new years eve"]=dt["new years"];var ht=dt,lt={year:(new Date).getFullYear(),month:0,date:1},mt=function(t,e,a){e=Object.assign({},lt,a,e);for(var n=Object.keys(e),r=0;r0&&e<25e8&&!1===t.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),t.epoch=e,t;if(t.epoch=Date.now(),t._today&&O.isObject(t._today)&&Object.keys(t._today).length>0){var r=mt(t,n,lt);r.isValid()&&(t.epoch=r.epoch)}if(null==e||""===e)return t;if(!0===O.isDate(e))return t.epoch=e.getTime(),t;if(!0===O.isArray(e))return t=function(t,e,a){for(var n=["year","month","date","hour","minute","second","millisecond"],r=0;r=0?Math.floor(e):Math.ceil(e)),a?(e*=-1,e="-"+(e=O.zeroPad(e,2))):e="+"+(e=O.zeroPad(e,2)),"+00:00"===(e=e+":"+n)&&(e="Z"),e},kt={day:function(t){return O.titleCase(t.dayName())},"day-short":function(t){return O.titleCase(gt()[t.day()])},"day-number":function(t){return t.day()},"day-ordinal":function(t){return O.ordinal(t.day())},"day-pad":function(t){return O.zeroPad(t.day())},date:function(t){return t.date()},"date-ordinal":function(t){return O.ordinal(t.date())},"date-pad":function(t){return O.zeroPad(t.date())},month:function(t){return O.titleCase(t.monthName())},"month-short":function(t){return O.titleCase(W()[t.month()])},"month-number":function(t){return t.month()},"month-ordinal":function(t){return O.ordinal(t.month())},"month-pad":function(t){return O.zeroPad(t.month())},"iso-month":function(t){return O.zeroPad(t.month()+1)},year:function(t){var e=t.year();return e>0?e:(e=Math.abs(e),e+" BC")},"year-short":function(t){var e=t.year();return e>0?"'".concat(String(t.year()).substr(2,4)):(e=Math.abs(e))+" BC"},"iso-year":function(t){var e=t.year(),a=e<0,n=O.zeroPad(Math.abs(e),4);return a&&(n="-"+(n=O.zeroPad(n,6))),n},time:function(t){return t.time()},"time-24":function(t){return"".concat(t.hour24(),":").concat(O.zeroPad(t.minute()))},hour:function(t){return t.hour12()},"hour-pad":function(t){return O.zeroPad(t.hour12())},"hour-24":function(t){return t.hour24()},"hour-24-pad":function(t){return O.zeroPad(t.hour24())},minute:function(t){return t.minute()},"minute-pad":function(t){return O.zeroPad(t.minute())},second:function(t){return t.second()},"second-pad":function(t){return O.zeroPad(t.second())},ampm:function(t){return t.ampm()},quarter:function(t){return"Q"+t.quarter()},season:function(t){return t.season()},era:function(t){return t.era()},json:function(t){return t.json()},timezone:function(t){return t.timezone().name},offset:function(t){return wt(t)},numeric:function(t){return"".concat(t.year(),"/").concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()))},"numeric-us":function(t){return"".concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()),"/").concat(t.year())},"numeric-uk":function(t){return"".concat(O.zeroPad(t.date()),"/").concat(O.zeroPad(t.month()+1),"/").concat(t.year())},"mm/dd":function(t){return"".concat(O.zeroPad(t.month()+1),"/").concat(O.zeroPad(t.date()))},iso:function(t){var e=t.format("iso-year"),a=O.zeroPad(t.month()+1),n=O.zeroPad(t.date()),r=O.zeroPad(t.h24()),o=O.zeroPad(t.minute()),i=O.zeroPad(t.second()),u=O.zeroPad(t.millisecond(),3),s=wt(t);return"".concat(e,"-").concat(a,"-").concat(n,"T").concat(r,":").concat(o,":").concat(i,".").concat(u).concat(s)},"iso-short":function(t){var e=O.zeroPad(t.month()+1),a=O.zeroPad(t.date());return"".concat(t.year(),"-").concat(e,"-").concat(a)},"iso-utc":function(t){return new Date(t.epoch).toISOString()},nice:function(t){return"".concat(W()[t.month()]," ").concat(O.ordinal(t.date()),", ").concat(t.time())},"nice-year":function(t){return"".concat(W()[t.month()]," ").concat(O.ordinal(t.date()),", ").concat(t.year())},"nice-day":function(t){return"".concat(gt()[t.day()]," ").concat(O.titleCase(W()[t.month()])," ").concat(O.ordinal(t.date()))},"nice-full":function(t){return"".concat(t.dayName()," ").concat(O.titleCase(t.monthName())," ").concat(O.ordinal(t.date()),", ").concat(t.time())}},Dt={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(Dt).forEach((function(t){return kt[t]=kt[Dt[t]]}));var zt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==t.isValid())return"";if(kt.hasOwnProperty(e)){var a=kt[e](t)||"";return"json"!==e&&(a=String(a),"ampm"!==e&&(a=O.titleCase(a))),a}if(-1!==e.indexOf("{")){var n=/\{(.+?)\}/g;return e=e.replace(n,(function(e,a){return a=a.toLowerCase().trim(),kt.hasOwnProperty(a)?String(kt[a](t)):""}))}return t.format("iso-short")},Ot=O.zeroPad,_t=O.formatTimezone,xt={G:function(t){return t.era()},GG:function(t){return t.era()},GGG:function(t){return t.era()},GGGG:function(t){return"AD"===t.era()?"Anno Domini":"Before Christ"},y:function(t){return t.year()},yy:function(t){return parseInt(String(t.year()).substr(2,4),10)},yyy:function(t){return t.year()},yyyy:function(t){return t.year()},yyyyy:function(t){return"0"+t.year()},Q:function(t){return t.quarter()},QQ:function(t){return t.quarter()},QQQ:function(t){return t.quarter()},QQQQ:function(t){return t.quarter()},M:function(t){return t.month()+1},MM:function(t){return Ot(t.month()+1)},MMM:function(t){return t.format("month-short")},MMMM:function(t){return t.format("month")},w:function(t){return t.week()},ww:function(t){return Ot(t.week())},d:function(t){return t.date()},dd:function(t){return Ot(t.date())},D:function(t){return t.dayOfYear()},DD:function(t){return Ot(t.dayOfYear())},DDD:function(t){return Ot(t.dayOfYear(),3)},E:function(t){return t.format("day-short")},EE:function(t){return t.format("day-short")},EEE:function(t){return t.format("day-short")},EEEE:function(t){return t.format("day")},EEEEE:function(t){return t.format("day")[0]},e:function(t){return t.day()},ee:function(t){return t.day()},eee:function(t){return t.format("day-short")},eeee:function(t){return t.format("day")},eeeee:function(t){return t.format("day")[0]},a:function(t){return t.ampm().toUpperCase()},aa:function(t){return t.ampm().toUpperCase()},aaa:function(t){return t.ampm().toUpperCase()},aaaa:function(t){return t.ampm().toUpperCase()},h:function(t){return t.h12()},hh:function(t){return Ot(t.h12())},H:function(t){return t.hour()},HH:function(t){return Ot(t.hour())},m:function(t){return t.minute()},mm:function(t){return Ot(t.minute())},s:function(t){return t.second()},ss:function(t){return Ot(t.second())},A:function(t){return t.epoch-t.startOf("day").epoch},z:function(t){return t.timezone().name},zz:function(t){return t.timezone().name},zzz:function(t){return t.timezone().name},zzzz:function(t){return t.timezone().name},Z:function(t){return _t(t.timezone().current.offset)},ZZ:function(t){return _t(t.timezone().current.offset)},ZZZ:function(t){return _t(t.timezone().current.offset)},ZZZZ:function(t){return _t(t.timezone().current.offset,":")}},jt=function(t,e,a){for(var n=t,r=e,o=0;o.5&&(t=t.add(1,e)),t=t.startOf(e)):!1===t.silent&&console.warn("no known unit '"+e+"'"),t},St=function(t,e,a){var n=0;for(t=t.clone();t.isBefore(e);)t=t.add(1,a),n+=1;return t.isAfter(e,a)&&(n-=1),n},Vt=function(t,e,a){return t.isBefore(e)?St(t,e,a):-1*St(e,t,a)},At=function(t,e){var a=e.epoch-t.epoch,n={milliseconds:a,seconds:parseInt(a/1e3,10)};n.minutes=parseInt(n.seconds/60,10),n.hours=parseInt(n.minutes/60,10);var r=t.clone();return n.years=function(t,e){var a=e.year()-t.year();return(t=t.year(e.year())).isAfter(e)&&(a-=1),a}(r,e),r=t.add(n.years,"year"),n.months=12*n.years,r=t.add(n.months,"month"),n.months+=Vt(r,e,"month"),n.weeks=52*n.years,r=t.add(n.weeks,"week"),n.weeks+=Vt(r,e,"week"),n.days=7*n.weeks,r=t.add(n.days,"day"),n.days+=Vt(r,e,"day"),n},Et=function(t,e,a){e=O.beADate(e,t);var n=!1;if(t.isAfter(e)){var r=t;t=e,e=r,n=!0}var o=At(t,e);return n&&(o=function(t){return Object.keys(t).forEach((function(e){t[e]*=-1})),t}(o)),a?(a=O.normalize(a),!0!==/s$/.test(a)&&(a+="s"),"dates"===a&&(a="days"),o[a]):o},Nt={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function Lt(t,e){return 1===t&&(e=e.slice(0,-1)),t+" "+e}var Yt=function(t,e){var a,n,r,o=function(t,e){var a=t.isBefore(e),n=a?e:t,r=a?t:e;r=r.clone();var o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((function(t){if(!r.isSame(n,t)){var e=r.diff(n,t);r=r.add(e,t),o[t]=e}})),a&&Object.keys(o).forEach((function(t){0!==o[t]&&(o[t]*=-1)})),o}(t,e=O.beADate(e,t));if(!0===Object.keys(o).every((function(t){return!o[t]})))return{diff:o,rounded:"now",qualified:"now",precise:"now"};var i=[];return Object.keys(o).forEach((function(t,e,r){var u=Math.abs(o[t]);if(0!==u){var s=Lt(u,t);if(i.push(s),!a){if(a=n=s,e>4)return;var c=r[e+1],d=Math.abs(o[c]);d>Nt[c].almost?(a=Lt(u+1,t),n="almost "+a):d>Nt[c].over&&(n="over "+s)}}})),r=i.splice(0,2).join(", "),!0===t.isAfter(e)?(a+=" ago",n+=" ago",r+=" ago"):(a="in "+a,n="in "+n,r="in "+r),{diff:o,rounded:a,qualified:n,precise:r}},It={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},$t=[null,[0,1],[3,1],[6,1],[9,1]],Ht={minute:function(t){return Z(t,{second:0,millisecond:0}),t},quarterhour:function(t){var e=t.minutes();return t=e>=45?t.minutes(45):e>=30?t.minutes(30):e>=15?t.minutes(15):t.minutes(0),Z(t,{second:0,millisecond:0}),t},hour:function(t){return Z(t,{minute:0,second:0,millisecond:0}),t},day:function(t){return Z(t,{hour:0,minute:0,second:0,millisecond:0}),t},week:function(t){var e=t.clone();return(t=t.day(t._weekStart)).isAfter(e)&&(t=t.subtract(1,"week")),Z(t,{hour:0,minute:0,second:0,millisecond:0}),t},month:function(t){return Z(t,{date:1,hour:0,minute:0,second:0,millisecond:0}),t},quarter:function(t){var e=t.quarter();return $t[e]&&Z(t,{month:$t[e][0],date:$t[e][1],hour:0,minute:0,second:0,millisecond:0}),t},season:function(t){var e=t.season(),a="north";"South"===t.hemisphere()&&(a="south");for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2?arguments[2]:void 0;if(!e||!a)return[];if(e=O.normalize(e),a=t.clone().set(a),t.isAfter(a)){var n=t;t=a,a=n}var r=t.clone();Jt(e)?(r=r.next(e),e="week"):r=r.next(e);for(var o=[];r.isBefore(a);)o.push(r),r=r.add(1,e);return o},Kt=function(t){var e=t.timezones,a=t.tz;if(!1===e.hasOwnProperty(a)&&(a=B(t.tz,e)),null===a)return!1===t.silent&&console.warn("Warn: could not find given or local timezone - '"+t.tz+"'"),{current:{epochShift:0}};var n,r,o=e[a],i={name:(n=a,n=(n=(n=n[0].toUpperCase()+n.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(function(t){return t.toUpperCase()}))),hasDst:Boolean(o.dst),default_offset:o.offset,hemisphere:"s"===o.hem?"South":"North",current:{}};if(i.hasDst){var u=(r=o.dst)?r.split("->"):[];i.change={start:u[0],back:u[1]}}var s=o.offset,c=s;return!0===i.hasDst&&(c="North"===i.hemisphere?s-1:o.offset+1),!1===i.hasDst?(i.current.offset=s,i.current.isDST=!1):!0===x(t.epoch,i.change.start,i.change.back,s)?(i.current.offset=s,i.current.isDST="North"===i.hemisphere):(i.current.offset=c,i.current.isDST="South"===i.hemisphere),i},Zt=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Gt={set:function(t,e){var a=this.clone();return a=ft(a,t,null),e&&(this.tz=B(e)),a},timezone:function(){return Kt(this)},isDST:function(){return Kt(this).current.isDST},hasDST:function(){return Kt(this).hasDst},offset:function(){return 60*Kt(this).current.offset},hemisphere:function(){return Kt(this).hemisphere},format:function(t){return zt(this,t)},unixFmt:function(t){return Mt(this,t)},startOf:function(t){return Bt(this,t)},endOf:function(t){return Ft(this,t)},leapYear:function(){var t=this.year();return O.isLeapYear(t)},progress:function(t){return Pt(this,t)},nearest:function(t){return Ct(this,t)},diff:function(t,e){return Et(this,t,e)},since:function(t){return t||(t=this.clone().set()),Yt(this,t)},next:function(t){return this.add(1,t).startOf(t)},last:function(t){return this.subtract(1,t).startOf(t)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(t){var e=this.clone();return e.tz=B(t,e.timezones),e},every:function(t,e){return Qt(this,t,e)},isAwake:function(){var t=this.hour();return!(t<8||t>22)},isAsleep:function(){return!this.isAwake()},log:function(){return console.log(""),console.log(zt(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(zt(this,"full-short")),this},json:function(){var t=this;return Zt.reduce((function(e,a){return e[a]=t[a](),e}),{})},debug:function(){var t=this.timezone(),e=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return e+="\n - "+this.format("time"),console.log("\n\n",e+"\n - "+t.name+" ("+t.current.offset+")"),this},from:function(t){return(t=this.clone().set(t)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(t){if("number"==typeof t)return this._weekStart=t,this;if("string"==typeof t){t=t.toLowerCase().trim();var e=gt().indexOf(t);-1===e&&(e=vt().indexOf(t)),-1===e&&(e=1),this._weekStart=e}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",t);return this}};Gt.inDST=Gt.isDST,Gt.round=Gt.nearest,Gt.each=Gt.every;var Rt=Gt,Wt=O.isLeapYear,Ut=function(t){return"string"==typeof t&&(t=parseInt(t,10)),t},Xt=["year","month","date","hour","minute","second","millisecond"],te=function(t,e,a){for(var n=Xt.indexOf(a),r=Xt.slice(n,Xt.length),o=0;o=24?e=24:e<0&&(e=0);var a=t.clone(),n=(t.hour()-e)*J.hour;return t.epoch-=n,Z(t,{hour:e}),te(t,a,"minute"),t.epoch},oe=function(t,e){var a=e.match(/([0-9]{1,2}):([0-9]{1,2})(am|pm)?/);if(!a){if(!(a=e.match(/([0-9]{1,2})(am|pm)/)))return t.epoch;a.splice(2,0,"0")}var n=!1,r=parseInt(a[1],10),o=parseInt(a[2],10);return r>12&&(n=!0),!1===n&&("am"===a[3]&&12===r&&(r=0),"pm"===a[3]&&r<12&&(r+=12)),(t=(t=(t=(t=t.hour(r)).minute(o)).second(0)).millisecond(0)).epoch},ie=function(t,e){if((e=Ut(e))>28){var a=t.month(),n=nt[a];1===a&&29===e&&Wt(t.year())&&(n=29),e>n&&(e=n)}return e<=0&&(e=1),Z(t,{date:e}),t.epoch},ue=function(t,e){"string"==typeof e&&(e=X()[e.toLowerCase()]),(e=Ut(e))>=12&&(e=11),e<=0&&(e=0);var a=t.date();return a>nt[e]&&(a=nt[e]),Z(t,{month:e,date:a}),t.epoch},se=function(t,e){return e=Ut(e),Z(t,{year:e}),t.epoch},ce=function(t,e){e=Ut(e);var a=t.clone();return(e-=1)<=0?e=0:e>=365&&(e=364),t=(t=t.startOf("year")).add(e,"day"),te(t,a,"hour"),t.epoch},de={millisecond:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ee(e,t),e}return this.d.getMilliseconds()},second:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ae(e,t),e}return this.d.getSeconds()},minute:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ne(e,t),e}return this.d.getMinutes()},hour:function(t){var e=this.d;if(void 0!==t){var a=this.clone();return a.epoch=re(a,t),a}return e.getHours()},hourFloat:function(t){if(void 0!==t){var e=this.clone(),a=t%1;a*=60;var n=parseInt(t,10);return e.epoch=re(e,n),e.epoch=ne(e,a),e}var r=this.d,o=r.getHours(),i=r.getMinutes();return o+(i/=60)},hour12:function(t){var e=this.d;if(void 0!==t){var a=this.clone(),n=(t=""+t).match(/^([0-9]+)(am|pm)$/);if(n){var r=parseInt(n[1],10);"pm"===n[2]&&(r+=12),a.epoch=re(a,r)}return a}var o=e.getHours();return o>12&&(o-=12),0===o&&(o=12),o},time:function(t){if(void 0!==t){var e=this.clone();return e.epoch=oe(e,t),e}return"".concat(this.h12(),":").concat(O.zeroPad(this.minute())).concat(this.ampm())},ampm:function(t){var e="am",a=this.hour();if(a>=12&&(e="pm"),"string"!=typeof t)return e;var n=this.clone();return t=t.toLowerCase().trim(),a>=12&&"am"===t?(a-=12,n.hour(a)):a<12&&"pm"===t?(a+=12,n.hour(a)):n},dayTime:function(t){if(void 0!==t){var e={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"},a=this.clone();return t=(t=t||"").toLowerCase(),!0===e.hasOwnProperty(t)&&(a=a.time(e[t])),a}var n=this.hour();return n<6?"night":n<12?"morning":n<17?"afternoon":n<22?"evening":"night"},iso:function(t){return void 0!==t?this.set(t):this.format("iso")}},he={date:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ie(e,t),e}return this.d.getDate()},day:function(t){if(void 0===t)return this.d.getDay();var e=this.clone(),a=t;"string"==typeof t&&(t=t.toLowerCase(),-1===(a=gt().indexOf(t))&&(a=vt().indexOf(t)));var n=this.d.getDay(),r=n-a,o=this.subtract(24*r,"hours");return Z(o,{hour:e.hour(),minute:e.minute(),second:e.second()}),o},dayName:function(t){if(void 0===t)return vt()[this.day()];var e=this.clone();return e=e.day(t)},month:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ue(e,t),e}return this.d.getMonth()}},le=function(t){return t=(t=(t=t.minute(0)).second(0)).millisecond(1)},me={dayOfYear:function(t){if(void 0!==t){var e=this.clone();return e.epoch=ce(e,t),e}for(var a,n=0,r=this.d.getMonth(),o=1;o<=r;o++)(a=new Date).setDate(1),a.setFullYear(this.d.getFullYear()),a.setHours(1),a.setMinutes(1),a.setMonth(o),a.setHours(-2),n+=a.getDate();return n+this.d.getDate()},week:function(t){if(void 0!==t){var e=this.clone();return e=(e=(e=e.month(0)).date(1)).day("monday"),"december"===(e=le(e)).monthName()&&(e=e.add(1,"week")),t-=1,e=e.add(t,"weeks")}var a=this.clone();a=(a=a.month(0)).date(1),"december"===(a=(a=le(a)).day("monday")).monthName()&&(a=a.add(1,"week"));var n=1;1===a.date()&&(n=0),a=a.minus(1,"second");var r=this.epoch;if(a.epoch>r)return 1;var o=0,i=4*this.month();for(a.epoch+=J.week*i,o+=i;o<52;o++){if(a.epoch>r)return o+n;a=a.add(1,"week")}return 52},monthName:function(t){if(void 0===t)return U()[this.month()];var e=this.clone();return e=e.month(t)},quarter:function(t){if(void 0!==t&&("string"==typeof t&&(t=t.replace(/^q/i,""),t=parseInt(t,10)),$t[t])){var e=this.clone(),a=$t[t][0];return e=(e=(e=e.month(a)).date(1)).startOf("day")}for(var n=this.d.getMonth(),r=1;r<$t.length;r++)if(n<$t[r][0])return r-1;return 4},season:function(t){var e="north";if("South"===this.hemisphere()&&(e="south"),void 0!==t){for(var a=this.clone(),n=0;n=It[e][o][1]&&r0&&(e.epoch=se(e,-1*a)),"ad"===t&&a<0&&(e.epoch=se(e,-1*a)),e}return this.d.getFullYear()<0?"BC":"AD"},decade:function(t){if(void 0!==t){if(!(t=(t=(t=String(t)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===t.length&&/[0-9][0-9]/.test(t)&&(t="19"+t);var e=Number(t);return isNaN(e)?this:(e=10*Math.floor(e/10),this.year(e))}return this.startOf("decade").year()},century:function(t){if(void 0!==t){"string"==typeof t&&(t=(t=(t=t.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,(function(t,e,a){return a.match(/b\.?c\.?/i)&&(e="-"+e),e}))).replace(/c$/,""));var e=Number(t);return isNaN(t)?(console.warn("Spacetime: Invalid century input"),this):(0===e&&(e=1),e=e>=0?100*(e-1):100*(e+1),this.year(e))}var a=this.startOf("century").year();return(a=Math.floor(a/100))<0?a-1:a+1},millenium:function(t){if(void 0!==t){if("string"==typeof t&&(t=t.replace(/([0-9])(th|rd|st|nd)/,"$1"),t=Number(t),isNaN(t)))return console.warn("Spacetime: Invalid millenium input"),this;t>0&&(t-=1);var e=1e3*t;return 0===e&&(e=1),this.year(e)}var a=Math.floor(this.year()/1e3);return a>=0&&(a+=1),a}},fe=Object.assign({},de,he,me);fe.milliseconds=fe.millisecond,fe.seconds=fe.second,fe.minutes=fe.minute,fe.hours=fe.hour,fe.hour24=fe.hour,fe.h12=fe.hour12,fe.h24=fe.hour24,fe.days=fe.day;var ye=function(t){Object.keys(fe).forEach((function(e){t.prototype[e]=fe[e]}))},pe=O.isLeapYear,ge=function(t,e){return 1===t&&pe(e)?29:nt[t]},ve=function(t,e){if(t.month>0){var a=parseInt(t.month/12,10);t.year=e.year()+a,t.month=t.month%12}else if(t.month<0){var n=Math.floor(Math.abs(t.month)/13,10);n=Math.abs(n)+1,t.year=e.year()-n,t.month=t.month%12,t.month=t.month+12,12===t.month&&(t.month=0)}return t},be=function(t,e,a){for(var n=e.year(),r=e.month(),o=ge(r,n);a>o;)a-=o,(r+=1)>=12&&(r-=12,n+=1),o=ge(r,n);return t.month=r,t.date=a,t},we=function(t,e,a){t.year=e.year(),t.month=e.month();var n=e.date();for(t.date=n-Math.abs(a);t.date<1;){t.month-=1,t.month<0&&(t.month=11,t.year-=1);var r=ge(t.month,t.year);t.date+=r}return t},ke=["millisecond","second","minute","hour","date","month"],De={second:ke.slice(0,1),minute:ke.slice(0,2),quarterhour:ke.slice(0,2),hour:ke.slice(0,3),date:ke.slice(0,4),month:ke.slice(0,4),quarter:ke.slice(0,4),season:ke.slice(0,4),year:ke,decade:ke,century:ke};De.week=De.hour,De.season=De.date,De.quarter=De.date;var ze={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},Oe={month:!0,quarter:!0,season:!0,year:!0},_e=function(t){t.prototype.add=function(t,e){var a=this.clone();if(!e||0===t)return a;var n=this.clone();e=O.normalize(e),J[e]?a.epoch+=J[e]*t:"week"===e?a.epoch+=J.day*(7*t):"quarter"===e||"season"===e||"season"===e?a.epoch+=J.month*(4*t):"quarterhour"===e&&(a.epoch+=15*J.minute*t);var r={};if(De[e]&&De[e].forEach((function(t){r[t]=n[t]()})),ze[e]){var o=n.timezone().current.offset-a.timezone().current.offset;a.epoch+=3600*o*1e3}if("month"===e&&(r.month=n.month()+t,r=ve(r,n)),"week"===e){var i=n.date()+7*t;i<=28&&i>1&&(r.date=i)}else if("date"===e){if(t<0)r=we(r,n,t);else{var u=n.date()+t;r=be(r,n,u)}0!==t&&n.isSame(a,"day")&&(r.date=n.date()+t)}else"year"===e&&a.year()===n.year()?a.epoch+=J.week:"decade"===e?r.year=a.year()+10:"century"===e&&(r.year=a.year()+100);if(Oe[e]){var s=nt[r.month];r.date=n.date(),r.date>s&&(r.date=s)}return Z(a,r),a},t.prototype.subtract=function(t,e){return this.clone().add(-1*t,e)},t.prototype.minus=t.prototype.subtract,t.prototype.plus=t.prototype.add},xe={millisecond:function(t){return t.epoch},second:function(t){return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second()].join("-")},minute:function(t){return[t.year(),t.month(),t.date(),t.hour(),t.minute()].join("-")},hour:function(t){return[t.year(),t.month(),t.date(),t.hour()].join("-")},day:function(t){return[t.year(),t.month(),t.date()].join("-")},week:function(t){return[t.year(),t.week()].join("-")},month:function(t){return[t.year(),t.month()].join("-")},quarter:function(t){return[t.year(),t.quarter()].join("-")},year:function(t){return t.year()}};xe.date=xe.day;var je=function(t){t.prototype.isSame=function(e,a){return a?("string"!=typeof e&&"number"!=typeof e||(e=new t(e,this.timezone.name)),a=a.replace(/s$/,""),xe[a]?xe[a](this)===xe[a](e):null):null}},Me=function(t){var e={isAfter:function(t){t=O.beADate(t,this);var e=O.getEpoch(t);return null===e?null:this.epoch>e},isBefore:function(t){t=O.beADate(t,this);var e=O.getEpoch(t);return null===e?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];t=O.beADate(t,this),e=O.beADate(e,this);var n=O.getEpoch(t);if(null===n)return null;var r=O.getEpoch(e);return null===r?null:a?this.isBetween(t,e)||this.isEqual(t)||this.isEqual(e):n2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=B(e,qe),this.silent=a.silent||!0,this.british=a.dmy||a.british,this._weekStart=1,void 0!==a.weekStart&&(this._weekStart=a.weekStart),this._today={},void 0!==a.today&&(this._today=a.today),Object.defineProperty(this,"d",{get:function(){var t=j(this),e=(new Date(this.epoch).getTimezoneOffset()||0)+60*t;e=60*e*1e3;var a=this.epoch+e;return new Date(a)}}),Object.defineProperty(this,"timezones",{get:function(){return qe},set:function(t){return qe=t,t}});var n=ft(this,t,e);this.epoch=n.epoch};Object.keys(Rt).forEach((function(t){Pe.prototype[t]=Rt[t]})),Pe.prototype.clone=function(){return new Pe(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today})},Pe.prototype.toLocalDate=function(){return new Date(this.epoch)},ye(Pe),_e(Pe),je(Pe),Me(Pe),Te(Pe);var Ce=Pe,Se=function(t,e){var a=new Ce(null),n=new Ce(null);a=a.time(t),n=e?n.time(e):a.add(59,"minutes");var r=a.hour(),o=n.hour();return Object.keys(a.timezones).filter((function(t){if(-1===t.indexOf("/"))return!1;var e=new Ce(null,t),i=e.hour();return i>=r&&i<=o&&(!(i===r&&e.minute()n.minute()))}))},Ve=function(t,e,a){return new Ce(t,e,a)},Ae=function(t){var e=t._today||{};return Object.keys(e).forEach((function(a){t=t[a](e[a])})),t};Ve.now=function(t,e){var a=new Ce((new Date).getTime(),t,e);return a=Ae(a)},Ve.today=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ae(a)).startOf("day")},Ve.tomorrow=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ae(a)).add(1,"day").startOf("day")},Ve.yesterday=function(t,e){var a=new Ce((new Date).getTime(),t,e);return(a=Ae(a)).subtract(1,"day").startOf("day")},Ve.extend=function(t){return Object.keys(t).forEach((function(e){Ce.prototype[e]=t[e]})),this},Ve.whereIts=Se,Ve.version="6.6.3",Ve.plugin=Ve.extend;var Ee=Ve;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var Ne=function(t){return t&&t.default||t}(Object.freeze({__proto__:null,default:Ee})),Le="America/",Ye="Asia/",Ie="Europe/",$e="Africa/",He="Australia/",Be="Pacific/",Fe={"british summer time":Ie+"London",bst:Ie+"London","british time":Ie+"London","britain time":Ie+"London","irish summer time":Ie+"Dublin","irish time":Ie+"Dublin",ireland:Ie+"Dublin","central european time":Ie+"Berlin",cet:Ie+"Berlin","central european summer time":Ie+"Berlin",cest:Ie+"Berlin","central europe":Ie+"Berlin","eastern european time":Ie+"Riga",eet:Ie+"Riga","eastern european summer time":Ie+"Riga",eest:Ie+"Riga","eastern europe time":Ie+"Riga","western european time":Ie+"Lisbon","western european summer time":Ie+"Lisbon","western europe":Ie+"Lisbon","turkey standard time":Ie+"Istanbul",trt:Ie+"Istanbul","turkish time":Ie+"Istanbul",etc:$e+"Freetown",utc:$e+"Freetown","greenwich standard time":$e+"Freetown",gmt:$e+"Freetown","east africa time":$e+"Nairobi","east african time":$e+"Nairobi","eastern africa time":$e+"Nairobi","central africa time":$e+"Khartoum","central african time":$e+"Khartoum","south africa standard time":$e+"Johannesburg",sast:$e+"Johannesburg","southern africa":$e+"Johannesburg","south african":$e+"Johannesburg","west africa standard time":$e+"Lagos","western africa time":$e+"Lagos","west african time":$e+"Lagos","australian central standard time":He+"Adelaide",acst:He+"Adelaide","australian central daylight time":He+"Adelaide",acdt:He+"Adelaide","australia central":He+"Adelaide","australian eastern standard time":He+"Brisbane",aest:He+"Brisbane","australian eastern daylight time":He+"Brisbane",aedt:He+"Brisbane","australia east":He+"Brisbane","australian western standard time":He+"Perth",awst:He+"Perth","australian western daylight time":He+"Perth",awdt:He+"Perth","australia west":He+"Perth","australian central western standard time":He+"Eucla",acwst:He+"Eucla","australia central west":He+"Eucla","lord howe standard time":He+"Lord_Howe",lhst:He+"Lord_Howe","lord howe daylight time":He+"Lord_Howe",lhdt:He+"Lord_Howe","russian standard time":Ie+"Moscow",msk:Ie+"Moscow",russian:Ie+"Moscow","central standard time":Le+"Chicago","central time":Le+"Chicago",cst:Le+"Havana","central daylight time":Le+"Chicago",cdt:Le+"Havana","mountain standard time":Le+"Denver","mountain time":Le+"Denver",mst:Le+"Denver","mountain daylight time":Le+"Denver",mdt:Le+"Denver","atlantic standard time":Le+"Halifax","atlantic time":Le+"Halifax",ast:Ye+"Baghdad","atlantic daylight time":Le+"Halifax",adt:Le+"Halifax","eastern standard time":Le+"New_York","eastern time":Le+"New_York",est:Le+"New_York","eastern daylight time":Le+"New_York",edt:Le+"New_York","pacific time":Le+"Los_Angeles","pacific standard time":Le+"Los_Angeles",pst:Le+"Los_Angeles","pacific daylight time":Le+"Los_Angeles",pdt:Le+"Los_Angeles","alaskan standard time":Le+"Anchorage","alaskan time":Le+"Anchorage",ahst:Le+"Anchorage","alaskan daylight time":Le+"Anchorage",ahdt:Le+"Anchorage","hawaiian standard time":Be+"Honolulu","hawaiian time":Be+"Honolulu",hst:Be+"Honolulu","aleutian time":Be+"Honolulu","hawaii time":Be+"Honolulu","newfoundland standard time":Le+"St_Johns","newfoundland time":Le+"St_Johns",nst:Le+"St_Johns","newfoundland daylight time":Le+"St_Johns",ndt:Le+"St_Johns","brazil time":Le+"Sao_Paulo",brt:Le+"Sao_Paulo","brasília":Le+"Sao_Paulo",brasilia:Le+"Sao_Paulo","brazilian time":Le+"Sao_Paulo","argentina time":Le+"Buenos_Aires","argentinian time":Le+"Buenos_Aires","amazon time":Le+"Manaus",amt:Le+"Manaus","amazonian time":Le+"Manaus","easter island standard time":"Chile/Easterisland",east:"Chile/Easterisland","easter island summer time":"Chile/Easterisland",easst:"Chile/Easterisland","venezuelan standard time":Le+"Caracas","venezuelan time":Le+"Caracas",vet:Le+"Caracas","venezuela time":Le+"Caracas","paraguay time":Le+"Asuncion",pyt:Le+"Asuncion","paraguay summer time":Le+"Asuncion",pyst:Le+"Asuncion","cuba standard time":Le+"Havana","cuba time":Le+"Havana","cuba daylight time":Le+"Havana","cuban time":Le+"Havana","bolivia time":Le+"La_Paz","bolivian time":Le+"La_Paz","colombia time":Le+"Bogota",cot:Le+"Bogota","colombian time":Le+"Bogota","acre time":Le+"Eirunepe","peru time":Le+"Lima","chile standard time":Le+"Punta_Arenas","chile time":Le+"Punta_Arenas",clst:Le+"Punta_Arenas","chile summer time":Le+"Punta_Arenas",cldt:Le+"Punta_Arenas","uruguay time":Le+"Montevideo",uyt:Le+"Montevideo",ist:Ye+"Jerusalem","arabic standard time":Ye+"Baghdad","arabic time":Ye+"Baghdad","arab time":Ye+"Baghdad","iran standard time":Ye+"Tehran","iran time":Ye+"Tehran",irst:Ye+"Tehran","iran daylight time":Ye+"Tehran",irdt:Ye+"Tehran",iranian:Ye+"Tehran","pakistan standard time":Ye+"Karachi","pakistan time":Ye+"Karachi",pkt:Ye+"Karachi","india standard time":Ye+"Kolkata","indian time":Ye+"Kolkata","indochina time":Ye+"Bangkok",ict:Ye+"Bangkok","south east asia":Ye+"Bangkok","china standard time":Ye+"Shanghai",ct:Ye+"Shanghai","chinese time":Ye+"Shanghai","alma-ata time":Ye+"Almaty",almt:Ye+"Almaty","oral time":Ye+"Oral","orat time":Ye+"Oral","yakutsk time":Ye+"Yakutsk",yakt:Ye+"Yakutsk","gulf standard time":Ye+"Dubai","gulf time":Ye+"Dubai",gst:Ye+"Dubai",uae:Ye+"Dubai","hong kong time":Ye+"Hong_Kong",hkt:Ye+"Hong_Kong","western indonesian time":Ye+"Jakarta",wib:Ye+"Jakarta","indonesia time":Ye+"Jakarta","central indonesian time":Ye+"Makassar",wita:Ye+"Makassar","israel daylight time":Ye+"Jerusalem",idt:Ye+"Jerusalem","israel standard time":Ye+"Jerusalem","israel time":Ye+"Jerusalem",israeli:Ye+"Jerusalem","krasnoyarsk time":Ye+"Krasnoyarsk",krat:Ye+"Krasnoyarsk","malaysia time":Ye+"Kuala_Lumpur",myt:Ye+"Kuala_Lumpur","singapore time":Ye+"Singapore",sgt:Ye+"Singapore","korea standard time":Ye+"Seoul","korea time":Ye+"Seoul",kst:Ye+"Seoul","korean time":Ye+"Seoul","uzbekistan time":Ye+"Samarkand",uzt:Ye+"Samarkand","vladivostok time":Ye+"Vladivostok",vlat:Ye+"Vladivostok","maldives time":"Indian/Maldives",mvt:"Indian/Maldives","mauritius time":"Indian/Mauritius",mut:"Indian/Mauritius","marshall islands time":Be+"Kwajalein",mht:Be+"Kwajalein","samoa standard time":Be+"Midway",sst:Be+"Midway","somoan time":Be+"Midway","chamorro standard time":Be+"Guam",chst:Be+"Guam","papua new guinea time":Be+"Bougainville",pgt:Be+"Bougainville"},Je=Ne().timezones,Qe=Object.keys(Je).reduce((function(t,e){return t[e]=e,t}),{}),Ke=Object.assign({},Fe,Qe),Ze={};[[["weekday","summer","winter","autumn","some day","one day","all day","some point","eod","eom","standard time","daylight time"],"#Date"],[["centuries","century","day","days","decade","decades","hour","hours","millisecond","milliseconds","minute","minutes","month","months","seconds","week","weeks","year","years"],"#Duration"],[["all hallows eve","all saints day","all sts day","april fools","armistice day","australia day","bastille day","boxing day","canada day","christmas eve","christmas","cinco de mayo","day of the dead","dia de muertos","dieciseis de septiembre","emancipation day","grito de dolores","groundhog day","halloween","harvey milk day","inauguration day","independence day","independents day","juneteenth","labour day","national freedom day","national nurses day","new years eve","new years","purple heart day","rememberance day","rosa parks day","saint andrews day","saint patricks day","saint stephens day","saint valentines day","st andrews day","st patricks day","st stephens day","st valentines day ","valentines day","valentines","veterans day","victoria day","womens equality day","xmas","epiphany","orthodox christmas day","orthodox new year","assumption of mary","all souls day","feast of the immaculate conception","feast of our lady of guadalupe","kwanzaa","imbolc","beltaine","lughnassadh","samhain","martin luther king day","mlk day","presidents day","mardi gras","tax day","commonwealth day","mothers day","memorial day","fathers day","columbus day","indigenous peoples day","canadian thanksgiving","election day","thanksgiving","t-day","turkey day","black friday","cyber monday","ash wednesday","palm sunday","maundy thursday","good friday","holy saturday","easter","easter sunday","easter monday","orthodox good friday","orthodox holy saturday","orthodox easter","orthodox easter monday","ascension day","pentecost","whitsunday","whit sunday","whit monday","trinity sunday","corpus christi","advent","tu bishvat","tu bshevat","purim","passover","yom hashoah","lag baomer","shavuot","tisha bav","rosh hashana","yom kippur","sukkot","shmini atzeret","simchat torah","chanukah","hanukkah","isra and miraj","lailat al-qadr","eid al-fitr","id al-Fitr","eid ul-Fitr","ramadan","eid al-adha","muharram","the prophets birthday","ostara","march equinox","vernal equinox","litha","june solistice","summer solistice","mabon","september equinox","fall equinox","autumnal equinox","yule","december solstice","winter solstice","chinese new year","diwali"],"#Holiday"],[["noon","midnight","now","morning","tonight","evening","afternoon","night","breakfast time","lunchtime","dinnertime","sometime","eod","oclock","oclock","all day","at night"],"#Time"],[Object.keys(Ke),"#Timezone"]].forEach((function(t){for(var e=0;e-13&&t<13?"Etc/GMT"+(t=((t*=-1)>0?"+":"")+t):null},ua=function(t){var e=t.match("#Timezone+"),a=(e=e.remove("(in|for|by|near|at)")).text("reduced");if(t.remove("#Timezone+"),Ke.hasOwnProperty(a))return Ke[a];var n=function(t){var e=t.match(aa);if(null!==e)return ia(e[1]);if(null!==(e=t.match(ra)))return ia(e[1]);if(null!==(e=t.match(oa))){var a=-1*Number(e[1]);return ia(a)}return null!==(e=t.match(na))?ia(e[1]):null}(a);return n||null},sa=function(){function t(a,n,r){e(this,t),this.unit=n||"day";var o={};(r=r||{}).today&&(o={date:r.today.date(),month:r.today.month(),year:r.today.year()});var i=Ne(a,r.timezone,{today:o});i.isValid()&&(i=i.startOf(this.unit)),Object.defineProperty(this,"d",{enumerable:!1,writable:!0,value:i}),Object.defineProperty(this,"context",{enumerable:!1,writable:!0,value:r})}return n(t,[{key:"clone",value:function(){return new t(this.d,this.unit,this.context)}},{key:"log",value:function(){return console.log("--"),this.d.log(),console.log("\n"),this}},{key:"applyShift",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).forEach((function(a){t.d=t.d.add(e[a],a)})),this}},{key:"applyTime",value:function(t){return this.d=t?this.d.time(t):this.d.startOf("day"),this}},{key:"format",value:function(t){return this.d.format(t)}},{key:"start",value:function(){return this.d=this.d.startOf(this.unit),this}},{key:"end",value:function(){return this.d=this.d.endOf(this.unit),this}},{key:"before",value:function(){return this.d=Ne.now(this.context.timezone,{today:this.context.today}),this}},{key:"after",value:function(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}},{key:"next",value:function(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}},{key:"last",value:function(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf(this.unit),this}}]),t}(),ca={Unit:sa,Day:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="day",i}return n}(sa),Month:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="month",i}return n}(sa),Quarter:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="quarter",i}return n}(sa),Year:function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).unit="year",i}return n}(sa),WeekDay:function(t){r(o,t);var a=s(o);function o(t,n,r){var i;return e(this,o),(i=a.call(this,t,n,r)).unit="week","string"==typeof t?(i.d=Ne(r.today,r.timezone),i.d=i.d.day(t),i.d.isBefore(r.today)&&(i.d=i.d.add(7,"days"))):i.d=t,i.weekDay=i.d.dayName(),i}return n(o,[{key:"clone",value:function(){return new o(this.d,this.unit,this.context)}},{key:"end",value:function(){return this.d=this.d.endOf("day"),this}},{key:"next",value:function(){return this.d=this.d.add(7,"days"),this.d=this.d.day(this.weekDay),this}},{key:"last",value:function(){return this.d=this.d.minus(7,"days"),this.d=this.d.day(this.weekDay),this}}]),o}(sa),CalendarDate:function(t){r(o,t);var a=s(o);function o(t,n,r){var i;return e(this,o),(i=a.call(this,t,n,r)).unit="day",i}return n(o,[{key:"next",value:function(){return this.d=this.d.add(1,"year"),this}},{key:"last",value:function(){return this.d=this.d.minus(1,"year"),this}}]),o}(sa)},da=ca.Unit,ha=function(t,e,a){var n=null;return!1===t.found&&(null!==a.time&&(n=new da(e.today,null,e)),Object.keys(a.shift).length>0&&(n=new da(e.today,null,e))),n},la={week:ca.Week,month:ca.Month,quarter:ca.Quarter,year:ca.Year,season:ca.Season},ma=function(t,e){var a=t.match("^(weekday|week|month|quarter|season|year)$");if(!0===a.found){var n=a.lastTerm().text("reduced");if(la.hasOwnProperty(n)){var r=la[n];return r?new r(null,n,e):null}}if(!0===(a=t.match("^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$")).found){var o=a.lastTerm().text("reduced");return new ca.WeekDay(o,null,e)}return null},fa=function(t,e,a){return t(a={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&a.path)}},a.exports),a.exports}((function(t,e){t.exports=function(t){t=t&&t.hasOwnProperty("default")?t.default:t;var e="january",a="february",n="april",r="may",o="july",i="august",u="september",s="october",c="november",d="december",h={"new years eve":[d,31],"new years":[e,1],"new years day":[e,1],"inauguration day":[e,20],"australia day":[e,26],"national freedom day":[a,1],"groundhog day":[a,2],"rosa parks day":[a,4],"valentines day":[a,14],"saint valentines day":[a,14],"st valentines day ":[a,14],"saint patricks day":["march",17],"st patricks day":["march",17],"april fools":[n,1],"april fools day":[n,1],"emancipation day":[n,16],"tax day":[n,15],"labour day":[r,1],"cinco de mayo":[r,5],"national nurses day":[r,6],"harvey milk day":[r,22],"victoria day":[r,24],juneteenth:["june",19],"canada day":[o,1],"independence day":[o,4],"independents day":[o,4],"bastille day":[o,14],"purple heart day":[i,7],"womens equality day":[i,26],"16 de septiembre":[u,16],"dieciseis de septiembre":[u,16],"grito de dolores":[u,16],halloween:[s,31],"all hallows eve":[s,31],"day of the dead":[s,31],"dia de muertos":[s,31],"veterans day":[c,11],"st andrews day":[c,30],"saint andrews day":[c,30],"all saints day":[c,1],"all sts day":[c,1],"armistice day":[c,11],"rememberance day":[c,11],"christmas eve":[d,24],christmas:[d,25],xmas:[d,25],"boxing day":[d,26],"st stephens day":[d,26],"saint stephens day":[d,26],epiphany:[e,6],"orthodox christmas day":[e,7],"orthodox new year":[e,14],"assumption of mary":[i,15],"all souls day":[c,2],"feast of the immaculate conception":[d,8],"feast of our lady of guadalupe":[d,12],kwanzaa:[d,26],imbolc:[a,2],beltaine:[r,1],lughnassadh:[i,1],samhain:[s,31]},l=function(e,a,n){if(h.hasOwnProperty(e)||h.hasOwnProperty(a)){var r=h[e]||h[a]||[],o=t.now();if((o=(o=(o=(o=o.year(n)).startOf("year")).month(r[0])).date(r[1])).isValid())return o}return null},m="monday",f={"martin luther king day":[3,m,"january"],"presidents day":[3,m,"february"],"commonwealth day":[2,m,"march"],"mothers day":[2,"sunday","may"],"fathers day":[3,"sunday","june"],"labor day":[1,m,"september"],"columbus day":[2,m,"october"],"canadian thanksgiving":[2,m,"october"],thanksgiving:[4,"thursday","november"],"black friday":[4,"friday","november"]};f["turday day"]=f.thanksgiving,f["indigenous peoples day"]=f["columbus day"],f["mlk day"]=f["martin luther king day"];var y=f,p=function(e,a,n){if(y.hasOwnProperty(e)||y.hasOwnProperty(a)){var r=y[e]||y[a]||[],o=t.now(),i=(o=(o=(o=o.year(n)).month(r[2])).startOf("month")).month();if((o=o.day(r[1])).month()!==i&&(o=o.add(1,"week")),r[0]>1&&(o=o.add(r[0]-1,"week")),o.isValid())return o}return null},g={easter:0,"ash wednesday":-46,"palm sunday":7,"maundy thursday":-3,"good friday":-2,"holy saturday":-1,"easter saturday":-1,"easter monday":1,"ascension day":39,"whit sunday":49,"whit monday":50,"trinity sunday":65,"corpus christi":60,"mardi gras":-47};g["easter sunday"]=g.easter,g.pentecost=g["whit sunday"],g.whitsun=g["whit sunday"];var v=g,b=function(t){var e=Math.floor,a=t%19,n=e(t/100),r=(n-e(n/4)-e((8*n+13)/25)+19*a+15)%30,o=r-e(r/28)*(1-e(29/(r+1))*e((21-a)/11)),i=o-(t+e(t/4)+o+2-n+e(n/4))%7,u=3+e((i+40)/44),s=i+28-31*e(u/4);return(u=4===u?"April":"March")+" "+s},w=function(e,a,n){if(v.hasOwnProperty(e)||v.hasOwnProperty(a)){var r=v[e]||v[a]||[],o=b(n);if(!o)return null;var i=t(o),u=(i=i.year(n)).add(r,"day");if(u.isValid())return u}return null},k={spring:[2003,2007,2044,2048,2052,2056,2060,2064,2068,2072,2076,2077,2080,2081,2084,2085,2088,2089,2092,2093,2096,2097],summer:[2021,2016,2020,2024,2028,2032,2036,2040,2041,2044,2045,2048,2049,2052,2053,2056,2057,2060,2061,2064,2065,2068,2069,2070,2072,2073,2074,2076,2077,2078,2080,2081,2082,2084,2085,2086,2088,2089,2090,2092,2093,2094,2096,2097,2098,2099],fall:[2002,2003,2004,2006,2007,2010,2011,2014,2015,2018,2019,2022,2023,2026,2027,2031,2035,2039,2043,2047,2051,2055,2059,2092,2096],winter:[2002,2003,2006,2007,2011,2015,2019,2023,2027,2031,2035,2039,2043,2080,2084,2088,2092,2096]},D=[2080,2084,2088,2092,2096],z=function(t){var e={spring:"March 20 "+t,summer:"June 21 "+t,fall:"Sept 22 "+t,winter:"Dec 21 "+t};return-1!==k.spring.indexOf(t)&&(e.spring="March 19 "+t),-1!==k.summer.indexOf(t)&&(e.summer="June 20 "+t),-1!==k.fall.indexOf(t)&&(e.fall="Sept 21 "+t),-1!==k.winter.indexOf(t)&&(e.winter="Dec 22 "+t),-1!==D.indexOf(t)&&(e.winter="Dec 20 "+t),e},O={"spring equinox":"spring","summer solistice":"summer","fall equinox":"fall","winter solstice":"winter"};O["march equinox"]=O["spring equinox"],O["vernal equinox"]=O["spring equinox"],O.ostara=O["spring equinox"],O["june solstice"]=O["summer solistice"],O.litha=O["summer solistice"],O["autumn equinox"]=O["fall equinox"],O["autumnal equinox"]=O["fall equinox"],O["september equinox"]=O["fall equinox"],O["sept equinox"]=O["fall equinox"],O.mabon=O["fall equinox"],O["december solstice"]=O["winter solistice"],O["dec solstice"]=O["winter solistice"],O.yule=O["winter solistice"];var _=O,x=function(e,a,n){if(_.hasOwnProperty(e)||_.hasOwnProperty(a)){var r=_[e]||_[a],o=z(n);if(!r||!o||!o[r])return null;var i=t(o[r]);if(i.isValid())return i}return null},j={"isra and miraj":"april 13","lailat al-qadr":"june 10","eid al-fitr":"june 15","id al-Fitr":"june 15","eid ul-Fitr":"june 15",ramadan:"may 16","eid al-adha":"sep 22",muharram:"sep 12","prophets birthday":"nov 21"},M=function(e,a,n){if(j.hasOwnProperty(e)||j.hasOwnProperty(a)){var r=j[e]||j[a]||[];if(!r)return null;var o=t(r+" 2018"),i=-10.64*(n-2018);if((o=(o=(o=o.add(i,"day")).startOf("day")).year(n)).isValid())return o}return null},T=t.now().year();return function(t,e){e=e||T,t=t||"";var a=(t=(t=(t=String(t)).trim().toLowerCase()).replace(/'s/,"s")).replace(/ day$/,"");a=(a=a.replace(/^the /,"")).replace(/^orthodox /,"");var n=l(t,a,e);return null!==n||null!==(n=p(t,a,e))||null!==(n=w(t,a,e))||null!==(n=x(t,a,e))||null!==(n=M(t,a,e))?n:null}}(Ne)})),ya=ca.CalendarDate,pa=function(t,e){var a=null,n=t.match("#Holiday+").text("reduced"),r=fa(n,2020);return null!==r&&(a=new ya(r,null,e)),a},ga=ca.Unit,va=ca.Day,ba=ca.CalendarDate,wa=ca.Month,ka={today:function(t){return new va(t.today,null,t)},yesterday:function(t){return new va(t.today.minus(1,"day"),null,t)},tomorrow:function(t){return new va(t.today.plus(1,"day"),null,t)}},Da={shift:Ue,time:ta,relative:ea,timezone:ua},za={implied:ha,duration:ma,holiday:pa,explicit:function(t,e){var a=e.today.year(),n=t.match("[#Value] of? [#Month] [#Year]");if(n.found||(n=t.match("[#Month] the? [#Value] [#Year]")),n.found){var r={month:n.groups("month").text(),date:n.groups("date").text(),year:n.groups("year").text()||a},o=new ba(r,null,e);if(!0===o.d.isValid())return o}if((n=t.match("[#Month] of? [#Year]")).found){var i={month:n.groups("month").text(),year:n.groups("year").text()||a},u=new wa(i,null,e);if(!0===u.d.isValid())return u}if((n=t.match("[#Value] of? [#Month]")).found||(n=t.match("[#Month] the? [#Value]")),n.found){var s={month:n.groups("month").text(),date:n.groups("date").text(),year:e.today.year()},c=new ba(s,null,e);if(!0===c.d.isValid())return c}if(t.has("#Month")){var d={month:t.match("#Month").text(),date:1,year:e.today.year()},h=new ba(d,null,e);if(!0===h.d.isValid())return h}if((n=t.match("the [#Value]")).found){var l={month:e.today.month(),date:n.groups("date").text(),year:e.today.year()},m=new ba(l,null,e);if(!0===m.d.isValid())return m}var f=t.text("reduced");if(!0===ka.hasOwnProperty(f))return ka[f](e);var y=new ga(f,null,e);return!1===y.d.isValid()?null:y}},Oa=function(t,e){var a=Da.shift(t),n=Da.timezone(t),r=Da.time(t,e),o=Da.relative(t);if(n){var i=(e=Object.assign({},e,{timezone:n})).today.format("iso-short");e.today=e.today.goto(e.timezone).set(i)}var u=null;return(u=(u=(u=(u=u||za.implied(t,e,{shift:a,time:r,rel:o}))||za.duration(t,e))||za.holiday(t,e))||za.explicit(t,e))?("last"===o&&u.last(),"next"===o&&u.next(),a&&u.applyShift(a),u.applyTime(r),u):null},_a=function(t,e){return t=t.applyShift(e.casual_duration)},xa=function(t,e){var a=t.match("between [*] and [*]");if(a.found){var n=a.groups("start");n=Oa(n,e);var r=a.groups("end");if(r=Oa(r,e),n)return{start:n,end:r}}if((a=t.match("[#Month #Value] to [#Month #Value] [#Year?]")).found){var o=a.groups(),i=o.from;if(o.year&&(i=i.concat(o.year)),i=Oa(i,e)){var u=o.to;return o.year&&(u=u.concat(o.year)),{start:i,end:u=Oa(u,e)}}}if((a=t.match("[#Month] [#Value] to [#Value] of? [#Year]")).found){var s=a.groups(),c=s.month.concat(s.from,s.year);if(c=Oa(c,e)){var d=s.month.concat(s.to,s.year);return{start:c,end:d=Oa(d,e)}}}if((a=t.match("[#Value] to [#Value of? #Month of? #Year]")).found){var h=a.groups("to");if(h=Oa(h,e)){var l=a.groups("to"),m=h.clone();return m.d=m.d.date(l.text("normal")),{start:m,end:h}}}if((a=t.match("[#Value] to [#Value of? #Month]")).found){var f=a.groups("to");if(f=Oa(f,e)){var y=a.groups("from"),p=f.clone();return p.d=p.d.date(y.text("normal")),{start:p,end:f}}}if((a=t.match("[#Month #Value] to [#Value]")).found){var g=a.groups("from");if(g=Oa(g,e)){var v=a.groups("to"),b=g.clone();return b.d=b.d.date(v.text("normal")),{start:g,end:b}}}if((a=t.match("from? [*] (to|@hasHyphen|until|upto) [*]")).found){var w=a.groups("from"),k=a.groups("to");if(w=Oa(w,e),k=Oa(k,e),w&&k)return{start:w,end:k}}if((a=t.match("^due (by|before|on|in)? [*]",0)).found){var D=Oa(a,e);if(D)return{start:new sa(e.today,null,e),end:_a(D.clone(),e)}}if((a=t.match("^(after|following|from) [*]",0)).found){var z=Oa(a,e);if(z)return{start:z,end:_a(z.clone(),e)}}if((a=t.match("^(on|during|in) [*]",0)).found){var O=Oa(a,e);if(O)return{start:O,end:O.clone().end()}}var _=Oa(t,e);return _?{start:_,end:_.clone().end()}:{start:null,end:null}},ja=function(t,e){return(e=e||{}).timezone=e.timezone||"ETC/UTC",e.today=Ne(e.today||null,e.timezone),t=Re(t),xa(t,e)},Ma=[["mon","monday"],["tue","tuesday"],["tues","tuesday"],["wed","wednesday"],["thu","thursday"],["thurs","thursday"],["fri","friday"],["sat","saturday"],["sun","sunday"],["jan","january"],["feb","february"],["mar","march"],["apr","april"],["jun","june"],["jul","july"],["aug","august"],["sep","september"],["sept","september"],["oct","october"],["nov","november"],["dec","december"]],Ta=Ma=Ma.map((function(t){return{short:t[0],long:t[1]}})),qa={json:function(t){var e=this,a=null;"number"==typeof t&&(a=t,t=null);var n=[],r=(t=t||{terms:!1}).format||"iso";return this.forEach((function(a){var o=a.json(t)[0],i=ja(a,e.context),u=i.start?i.start.format(r):null,s=i.end?i.end.format(r):null;o.date={start:u,end:s},u&&s&&(o.date.duration=i.start.d.diff(i.end.d),delete o.date.duration.milliseconds,delete o.date.duration.seconds),n.push(o)})),null!==a?n[a]:n},format:function(t){var e=this;return this.forEach((function(a){var n=ja(a,e.context),r="";if(n.start){if(r=n.start.format(t),n.end){var o=n.start.format(t);r!==o&&(r+=" to "+o)}a.replaceWith(r,{keepTags:!0,keepCase:!1})}})),this},toLongForm:function(){var t=this;return Ta.forEach((function(e){t.replace(e.short,e.long,!0)})),this},toShortForm:function(){var t=this;return Ta.forEach((function(e){t.replace(e.long,e.short,!0)})),this}};return function(a,n){n.addTags(D),n.addWords(Ge),n.postProcess(k);var o=function(t){r(n,t);var a=s(n);function n(t,r,o){var i;return e(this,n),(i=a.call(this,t,r,o)).context={casual_duration:{weeks:2}},i}return n}(a);Object.assign(o.prototype,qa),a.prototype.dates=function(e){var a={};e&&"object"===t(e)&&(a=e,e=null);var n=this.clauses().match("#Date+");"number"==typeof e&&(n=n.get(e)),"number"==typeof e&&(n=n.get(e));var r=new o(n.list,this,this.world);return a.today&&(a.today=Ne(a.today,a.timezone)),r.context=a,r}}})); diff --git a/plugins/dates/builds/compromise-dates.mjs b/plugins/dates/builds/compromise-dates.mjs index 624c810fa..b5fceecfe 100644 --- a/plugins/dates/builds/compromise-dates.mjs +++ b/plugins/dates/builds/compromise-dates.mjs @@ -1,4 +1,4 @@ -/* compromise-dates 1.1.0 MIT */ +/* compromise-dates 1.2.0 MIT */ function _typeof(obj) { "@babel/helpers - typeof"; @@ -292,7 +292,9 @@ var here = 'date-values'; // var values = function values(doc) { // a year ago - doc.match('!once [a] #Duration', 0).replaceWith('1').tag('Cardinal', here); + if (!doc.has('once [a] #Duration')) { + doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here); + } if (doc.has('#Value')) { //june 5 to 7th @@ -494,17 +496,19 @@ var fixUp = function fixUp(doc) { if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) { - d.match('(minutes|seconds|weeks|hours|days|months)').unTag('#Date', 'log-hours'); + d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours'); } // about thanksgiving if (d.has('about #Holiday')) { d.match('about').unTag('#Date', 'about-thanksgiving'); - } // dangling date-chunks + } // a month from now + + + d.match('(from|by|before) now').unTag('Time'); // dangling date-chunks // if (d.has('!#Date (in|of|by|for) !#Date')) { // d.unTag('Date', 'dangling-date') // } - } return doc; @@ -5412,19 +5416,37 @@ var WeekDay = /*#__PURE__*/function (_Unit5) { _classCallCheck(this, WeekDay); _this5 = _super5.call(this, input, unit, context); - _this5.unit = 'week'; - _this5.d = spacetime$2(context.today, context.timezone); - _this5.d = _this5.d.day(input); - _this5.weekDay = _this5.d.dayName(); //assume a wednesday in the future + _this5.unit = 'week'; // is the input just a weekday? + + if (typeof input === 'string') { + _this5.d = spacetime$2(context.today, context.timezone); + _this5.d = _this5.d.day(input); // assume a wednesday in the future - if (_this5.d.date() < spacetime$2.now(context.timezone).date()) { - _this5.d = _this5.d.add(7, 'days'); + if (_this5.d.isBefore(context.today)) { + _this5.d = _this5.d.add(7, 'days'); + } + } else { + _this5.d = input; } + _this5.weekDay = _this5.d.dayName(); return _this5; } _createClass(WeekDay, [{ + key: "clone", + value: function clone() { + //overloaded method + return new WeekDay(this.d, this.unit, this.context); + } + }, { + key: "end", + value: function end() { + //overloaded method + this.d = this.d.endOf('day'); + return this; + } + }, { key: "next", value: function next() { this.d = this.d.add(7, 'days'); @@ -5518,7 +5540,7 @@ var mapping$1 = { var namedUnit = function namedUnit(doc, context) { //this month, last quarter, next year - var m = doc.match('(weekday|week|month|quarter|season|year)'); + var m = doc.match('^(weekday|week|month|quarter|season|year)$'); if (m.found === true) { var str = m.lastTerm().text('reduced'); @@ -5536,7 +5558,7 @@ var namedUnit = function namedUnit(doc, context) { } //try this version - 'next friday, last thursday' - m = doc.match('(monday|tuesday|wednesday|thursday|friday|saturday|sunday)'); + m = doc.match('^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$'); if (m.found === true) { var _str = m.lastTerm().text('reduced'); @@ -6198,17 +6220,15 @@ var parseDate = function parseDate(doc, context) { d = d || steps.holiday(doc, context); // 'this june 2nd' - d = d || steps.explicit(doc, context); - - if ((typeof process === "undefined" ? "undefined" : _typeof(process)) !== undefined && process && process.env.DEBUG) { - console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-'); - console.log(" shift: ".concat(JSON.stringify(shift))); - console.log(" rel: ".concat(rel || '-')); - console.log(" time: ".concat(time || '-')); - console.log("\n str: '".concat(doc.text(), "'")); - console.log('\n ', d); - console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n'); - } + d = d || steps.explicit(doc, context); // if (typeof process !== undefined && process && process.env.DEBUG) { + // console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-') + // console.log(` shift: ${JSON.stringify(shift)}`) + // console.log(` rel: ${rel || '-'}`) + // console.log(` time: ${time || '-'}`) + // console.log(`\n str: '${doc.text()}'`) + // console.log('\n ', d) + // console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n') + // } if (!d) { return null; @@ -6432,9 +6452,17 @@ var logic = function logic(doc, context) { var d = _03ParseDate(doc, context); + + if (d) { + return { + start: d, + end: d.clone().end() + }; + } + return { - start: d, - end: d.clone().end() + start: null, + end: null }; }; diff --git a/plugins/dates/package-lock.json b/plugins/dates/package-lock.json index df0e250cd..4d79a6c21 100644 --- a/plugins/dates/package-lock.json +++ b/plugins/dates/package-lock.json @@ -1,6 +1,6 @@ { "name": "compromise-dates", - "version": "1.0.0", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -866,9 +866,9 @@ "dev": true }, "spacetime": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.6.3.tgz", - "integrity": "sha512-0e4g04PAbKPuONcohGa6zl6NUWlemUCCkGSQ5Nmc7VOxsN6b2N9/NJuNhkSjJ5K0AK37fopvNP/pjqNj+hqymw==" + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.6.4.tgz", + "integrity": "sha512-zqrj0LUhsX51Zxeg7zBPjadbQZtUpQYoVuFLWWQM+YX9dh4WabaL5RKvQ8kWQaH+iloFQ9O8+w0cVSrpo/El6Q==" }, "spacetime-holiday": { "version": "0.0.2", diff --git a/plugins/dates/package.json b/plugins/dates/package.json index 4e7c66bc0..efd4d7e08 100644 --- a/plugins/dates/package.json +++ b/plugins/dates/package.json @@ -1,7 +1,7 @@ { "name": "compromise-dates", "description": "plugin for nlp-compromise", - "version": "1.1.0", + "version": "1.2.0", "author": "Spencer Kelly (http://spencermounta.in)", "main": "./builds/compromise-dates.js", "unpkg": "./builds/compromise-dates.min.js", @@ -47,7 +47,7 @@ "tape": "5.0.1" }, "dependencies": { - "spacetime": "6.6.3", + "spacetime": "6.6.4", "spacetime-holiday": "0.0.2" }, "license": "MIT" diff --git a/plugins/dates/src/01-tag/01-values.js b/plugins/dates/src/01-tag/01-values.js index d1f131f1c..a3b9a52d1 100644 --- a/plugins/dates/src/01-tag/01-values.js +++ b/plugins/dates/src/01-tag/01-values.js @@ -2,7 +2,9 @@ const here = 'date-values' // const values = function (doc) { // a year ago - doc.match('!once [a] #Duration', 0).replaceWith('1').tag('Cardinal', here) + if (!doc.has('once [a] #Duration')) { + doc.match('[a] #Duration', 0).replaceWith('1').tag('Cardinal', here) + } if (doc.has('#Value')) { //june 5 to 7th doc.match('#Month #Value to #Value of? #Year?').tag('Date', here) diff --git a/plugins/dates/src/01-tag/02-dates.js b/plugins/dates/src/01-tag/02-dates.js index bfaced4c6..f9919fa38 100644 --- a/plugins/dates/src/01-tag/02-dates.js +++ b/plugins/dates/src/01-tag/02-dates.js @@ -1,7 +1,6 @@ const here = 'date-tagger' // -const dateTagger = function(doc) { - +const dateTagger = function (doc) { doc.match('(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)').match('#Noun').tag('Season', here) doc.match('(q1|q2|q3|q4)').tag('FinancialQuarter', here) doc.match('(this|next|last|current) quarter').tag('FinancialQuarter', here) @@ -9,27 +8,27 @@ const dateTagger = function(doc) { if (doc.has('#Date')) { //friday to sunday - doc.match('#Date #Preposition #Date').tag('Date', here); + doc.match('#Date #Preposition #Date').tag('Date', here) //once a day.. - doc.match('(once|twice) (a|an|each) #Date').tag('Date', here); + doc.match('(once|twice) (a|an|each) #Date').tag('Date', here) //TODO:fixme - doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here); + doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here) //tuesday - doc.match('#Date+').tag('Date', here); + doc.match('#Date+').tag('Date', here) //by June - doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here); + doc.match('(by|until|on|in|at|during|over|every|each|due) the? #Date').tag('Date', here) //a year after.. - doc.match('a #Duration').tag('Date', here); + doc.match('a #Duration').tag('Date', here) //between x and y - doc.match('(between|from) #Date').tag('Date', here); - doc.match('(to|until|upto) #Date').tag('Date', here); - doc.match('#Date and #Date').tag('Date', here); + doc.match('(between|from) #Date').tag('Date', here) + doc.match('(to|until|upto) #Date').tag('Date', here) + doc.match('#Date and #Date').tag('Date', here) //during this june - doc.match('(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)').tag('Date', here); + doc.match('(by|until|after|before|during|on|in|following) (next|this|last)? (#Date|#Date)').tag('Date', here) //day after next - doc.match('the? #Date after next one?').tag('Date', here); + doc.match('the? #Date after next one?').tag('Date', here) //approximately... - doc.match('(about|approx|approximately|around) #Date').tag('Date', here); + doc.match('(about|approx|approximately|around) #Date').tag('Date', here) } return doc } diff --git a/plugins/dates/src/01-tag/03-sections.js b/plugins/dates/src/01-tag/03-sections.js index 6876755cb..710374b4f 100644 --- a/plugins/dates/src/01-tag/03-sections.js +++ b/plugins/dates/src/01-tag/03-sections.js @@ -1,15 +1,15 @@ const here = 'section-tagger' // -const sectionTagger = function(doc) { +const sectionTagger = function (doc) { if (doc.has('#Date')) { // //next september - doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here); + doc.match('this? (last|next|past|this|previous|current|upcoming|coming|the) #Date').tag('Date', here) //starting this june - doc.match('(starting|beginning|ending) #Date').tag('Date', here); + doc.match('(starting|beginning|ending) #Date').tag('Date', here) //start of june - doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here); + doc.match('the? (start|end|middle|beginning) of (last|next|this|the) (#Date|#Date)').tag('Date', here) //this coming june - doc.match('(the|this) #Date').tag('Date', here); + doc.match('(the|this) #Date').tag('Date', here) } return doc } diff --git a/plugins/dates/src/01-tag/06-fixup.js b/plugins/dates/src/01-tag/06-fixup.js index c27e6b4c5..368cf8a6c 100644 --- a/plugins/dates/src/01-tag/06-fixup.js +++ b/plugins/dates/src/01-tag/06-fixup.js @@ -62,12 +62,15 @@ const fixUp = function (doc) { } // log the hours if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) { - d.match('(minutes|seconds|weeks|hours|days|months)').unTag('#Date', 'log-hours') + d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours') } // about thanksgiving if (d.has('about #Holiday')) { d.match('about').unTag('#Date', 'about-thanksgiving') } + + // a month from now + d.match('(from|by|before) now').unTag('Time') // dangling date-chunks // if (d.has('!#Date (in|of|by|for) !#Date')) { // d.unTag('Date', 'dangling-date') diff --git a/plugins/dates/src/02-getDate/01-parse-range.js b/plugins/dates/src/02-getDate/01-parse-range.js index 38ec4642f..c91241204 100644 --- a/plugins/dates/src/02-getDate/01-parse-range.js +++ b/plugins/dates/src/02-getDate/01-parse-range.js @@ -154,9 +154,15 @@ const logic = function (doc, context) { } //else, try whole thing let d = parseDate(doc, context) + if (d) { + return { + start: d, + end: d.clone().end(), + } + } return { - start: d, - end: d.clone().end(), + start: null, + end: null, } } module.exports = logic diff --git a/plugins/dates/src/03-parseDate/_units.js b/plugins/dates/src/03-parseDate/_units.js index 689b80564..da533efd4 100644 --- a/plugins/dates/src/03-parseDate/_units.js +++ b/plugins/dates/src/03-parseDate/_units.js @@ -29,13 +29,27 @@ class WeekDay extends Unit { constructor(input, unit, context) { super(input, unit, context) this.unit = 'week' - this.d = spacetime(context.today, context.timezone) - this.d = this.d.day(input) - this.weekDay = this.d.dayName() - //assume a wednesday in the future - if (this.d.date() < spacetime.now(context.timezone).date()) { - this.d = this.d.add(7, 'days') + // is the input just a weekday? + if (typeof input === 'string') { + this.d = spacetime(context.today, context.timezone) + this.d = this.d.day(input) + // assume a wednesday in the future + if (this.d.isBefore(context.today)) { + this.d = this.d.add(7, 'days') + } + } else { + this.d = input } + this.weekDay = this.d.dayName() + } + clone() { + //overloaded method + return new WeekDay(this.d, this.unit, this.context) + } + end() { + //overloaded method + this.d = this.d.endOf('day') + return this } next() { this.d = this.d.add(7, 'days') diff --git a/plugins/dates/src/03-parseDate/index.js b/plugins/dates/src/03-parseDate/index.js index 05b688ee4..30f86832c 100644 --- a/plugins/dates/src/03-parseDate/index.js +++ b/plugins/dates/src/03-parseDate/index.js @@ -34,16 +34,15 @@ const parseDate = function (doc, context) { d = d || steps.holiday(doc, context) // 'this june 2nd' d = d || steps.explicit(doc, context) - - if (typeof process !== undefined && process && process.env.DEBUG) { - console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-') - console.log(` shift: ${JSON.stringify(shift)}`) - console.log(` rel: ${rel || '-'}`) - console.log(` time: ${time || '-'}`) - console.log(`\n str: '${doc.text()}'`) - console.log('\n ', d) - console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n') - } + // if (typeof process !== undefined && process && process.env.DEBUG) { + // console.log('\n\n=-=-=-=-=-=Date-=-=-=-=-=-=-') + // console.log(` shift: ${JSON.stringify(shift)}`) + // console.log(` rel: ${rel || '-'}`) + // console.log(` time: ${time || '-'}`) + // console.log(`\n str: '${doc.text()}'`) + // console.log('\n ', d) + // console.log('=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\n') + // } if (!d) { return null diff --git a/plugins/dates/src/03-parseDate/steps/01-duration.js b/plugins/dates/src/03-parseDate/steps/01-duration.js index 231aafa9a..2e59a3bf6 100644 --- a/plugins/dates/src/03-parseDate/steps/01-duration.js +++ b/plugins/dates/src/03-parseDate/steps/01-duration.js @@ -10,7 +10,7 @@ const mapping = { // when a unit of time is spoken of as 'this month' - instead of 'february' const namedUnit = function (doc, context) { //this month, last quarter, next year - let m = doc.match('(weekday|week|month|quarter|season|year)') + let m = doc.match('^(weekday|week|month|quarter|season|year)$') if (m.found === true) { let str = m.lastTerm().text('reduced') if (mapping.hasOwnProperty(str)) { @@ -24,7 +24,7 @@ const namedUnit = function (doc, context) { } //try this version - 'next friday, last thursday' - m = doc.match('(monday|tuesday|wednesday|thursday|friday|saturday|sunday)') + m = doc.match('^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$') if (m.found === true) { let str = m.lastTerm().text('reduced') let unit = new units.WeekDay(str, null, context) diff --git a/plugins/dates/src/03-parseDate/steps/03-explicit.js b/plugins/dates/src/03-parseDate/steps/03-explicit.js index 09ff343ed..9e42a4d05 100644 --- a/plugins/dates/src/03-parseDate/steps/03-explicit.js +++ b/plugins/dates/src/03-parseDate/steps/03-explicit.js @@ -1,5 +1,4 @@ const { Unit, Day, CalendarDate, Month } = require('../_units') -const tryHere = require('../../../../../src/Phrase/match/03-tryMatch') const knownWord = { today: (context) => { @@ -35,7 +34,6 @@ const parseExplicit = function (doc, context) { return d } } - //no-dates // 'march 1992' m = doc.match('[#Month] of? [#Year]') diff --git a/plugins/export/src/index.js b/plugins/export/src/index.js index d437438ff..acc391e45 100644 --- a/plugins/export/src/index.js +++ b/plugins/export/src/index.js @@ -1,15 +1,16 @@ const exportFn = require('./export') const loadFn = require('./import') -const addMethods = function(Doc, world, nlp) { +const addMethods = function (Doc, world, nlp) { /** create a compressed json object from this document */ Doc.prototype.export = exportFn /** create a compromise object from compressed export data */ - nlp.import = function(data) { + nlp.import = function (data) { let json = loadFn(data, this.world) return nlp.fromJSON(json) } + nlp.load = nlp.import } module.exports = addMethods diff --git a/plugins/numbers/src/index.js b/plugins/numbers/src/index.js index 96474f8b2..ba70cd778 100644 --- a/plugins/numbers/src/index.js +++ b/plugins/numbers/src/index.js @@ -32,7 +32,7 @@ const plugin = function (Doc, world) { return new Numbers(m.list, this, this.world) }, /** number + currency pair */ - money: function (n) { + money: function () { // let nums = findNumbers(this, n) let m = this.match('#Money+ #Currency?') // m = m.concat(nums.hasAfter('#Currency')) //'5 dollars' diff --git a/plugins/pronounce/README.md b/plugins/pronounce/README.md new file mode 100644 index 000000000..0b6d07bf8 --- /dev/null +++ b/plugins/pronounce/README.md @@ -0,0 +1,37 @@ +
+ + +
a plugin for compromise
+ + + + + + + + + + +
+
+ +
+ npm install compromise-pronounce +
+an [nlp_compromise](https://github.com/nlp-compromise/nlp_compromise) plugin for a phonetic spelling of text. + +it is a [metaphone](https://en.wikipedia.org/wiki/Metaphone) implementation in javascript, based on Chris Umbel's great work in [naturalNode](https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js) + +```javascript +var nlp = require('compromise') +var nlpPronounce = require('compromise-pronounce') +nlp.extend(nlpPronounce) +var texxt = 'Phil Collins' +var doc = nlp(texxt) +console.log(doc.pronounce()) +``` + +it also takes advantage of the tokenization & cleverness of nlp_compromise. + +it's not been properly tested. +MIT diff --git a/plugins/pronounce/builds/compromise-pronounce.js b/plugins/pronounce/builds/compromise-pronounce.js new file mode 100644 index 000000000..25b4186c5 --- /dev/null +++ b/plugins/pronounce/builds/compromise-pronounce.js @@ -0,0 +1,139 @@ +/* compromise-pronounce 0.0.2 MIT */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.compromiseRedact = factory()); +}(this, (function () { 'use strict'; + + var transformations = { + dedup: function dedup(s) { + return s.replace(/([^c])\1/g, '$1'); + }, + dropInitialLetters: function dropInitialLetters(s) { + if (s.match(/^(kn|gn|pn|ae|wr)/)) { + return s.substr(1, s.length - 1); + } + + return s; + }, + dropBafterMAtEnd: function dropBafterMAtEnd(s) { + return s.replace(/mb$/, 'm'); + }, + cchange: function cchange(s) { + s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim(); + s = s.replace(/cia/g, 'xia'); + s = s.replace(/c(i|e|y)/g, 's$1'); + return s.replace(/c/g, 'k'); + }, + dchange: function dchange(s) { + s = s.replace(/d(ge|gy|gi)/g, 'j$1'); + return s.replace(/d/g, 't'); + }, + dropG: function dropG(s) { + s = s.replace(/gh(^$|[^aeiou])/g, 'h$1'); + return s.replace(/g(n|ned)$/g, '$1'); + }, + changeG: function changeG(s) { + s = s.replace(/gh/g, 'f'); + s = s.replace(/([^g]|^)(g)(i|e|y)/g, '$1j$3'); + s = s.replace(/gg/g, 'g'); + return s.replace(/g/g, 'k'); + }, + dropH: function dropH(s) { + return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2'); + }, + changeCK: function changeCK(s) { + return s.replace(/ck/g, 'k'); + }, + changePH: function changePH(s) { + return s.replace(/ph/g, 'f'); + }, + changeQ: function changeQ(s) { + return s.replace(/q/g, 'k'); + }, + changeS: function changeS(s) { + return s.replace(/s(h|io|ia)/g, 'x$1'); + }, + changeT: function changeT(s) { + s = s.replace(/t(ia[^n]|io)/g, 'x$1'); + return s.replace(/th/, '0'); + }, + dropT: function dropT(s) { + return s.replace(/tch/g, 'ch'); + }, + changeV: function changeV(s) { + return s.replace(/v/g, 'f'); + }, + changeWH: function changeWH(s) { + return s.replace(/^wh/, 'w'); + }, + dropW: function dropW(s) { + return s.replace(/w([^aeiou]|$)/g, '$1'); + }, + changeX: function changeX(s) { + s = s.replace(/^x/, 's'); + return s.replace(/x/g, 'ks'); + }, + dropY: function dropY(s) { + return s.replace(/y([^aeiou]|$)/g, '$1'); + }, + changeZ: function changeZ(s) { + return s.replace(/z/, 's'); + }, + dropVowels: function dropVowels(s) { + return s; //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, ''); + } + }; + var transformations_1 = transformations; + + //adapted from the work of Chris Umbel + // https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js + + + var metaphone = function metaphone(s) { + s = transformations_1.dedup(s); + s = transformations_1.dropInitialLetters(s); + s = transformations_1.dropBafterMAtEnd(s); + s = transformations_1.changeCK(s); + s = transformations_1.cchange(s); + s = transformations_1.dchange(s); + s = transformations_1.dropG(s); + s = transformations_1.changeG(s); + s = transformations_1.dropH(s); + s = transformations_1.changePH(s); + s = transformations_1.changeQ(s); + s = transformations_1.changeS(s); + s = transformations_1.changeX(s); + s = transformations_1.changeT(s); + s = transformations_1.dropT(s); + s = transformations_1.changeV(s); + s = transformations_1.changeWH(s); + s = transformations_1.dropW(s); + s = transformations_1.dropY(s); + s = transformations_1.changeZ(s); + s = transformations_1.dropVowels(s); + return s.trim(); + }; + + var metaphone_1 = metaphone; + + /** adds .numbers() method */ + + var plugin = function plugin(Doc) { + Doc.prototype.pronounce = function () { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.normal = true; + var json = this.json(opts); + json.forEach(function (obj) { + obj.pronounce = metaphone_1(obj.normal); + }); + return json; + }; + }; + + var src = plugin; + + return src; + +}))); +//# sourceMappingURL=compromise-pronounce.js.map diff --git a/plugins/pronounce/builds/compromise-pronounce.js.map b/plugins/pronounce/builds/compromise-pronounce.js.map new file mode 100644 index 000000000..7eb058e4e --- /dev/null +++ b/plugins/pronounce/builds/compromise-pronounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compromise-pronounce.js","sources":["../src/transformations.js","../src/metaphone.js","../src/index.js"],"sourcesContent":["'use strict';\n\n//individual manipulations of the text\nconst transformations = {\n dedup: (s) => {\n return s.replace(/([^c])\\1/g, '$1');\n },\n dropInitialLetters: (s) => {\n if (s.match(/^(kn|gn|pn|ae|wr)/)) {\n return s.substr(1, s.length - 1);\n }\n return s;\n },\n dropBafterMAtEnd: (s) => {\n return s.replace(/mb$/, 'm');\n },\n cchange: (s) => {\n s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim();\n s = s.replace(/cia/g, 'xia');\n s = s.replace(/c(i|e|y)/g, 's$1');\n return s.replace(/c/g, 'k');\n },\n dchange: (s) => {\n s = s.replace(/d(ge|gy|gi)/g, 'j$1');\n return s.replace(/d/g, 't');\n },\n dropG: (s) => {\n s = s.replace(/gh(^$|[^aeiou])/g, 'h$1');\n return s.replace(/g(n|ned)$/g, '$1');\n },\n changeG: (s) => {\n s = s.replace(/gh/g, 'f');\n s = s.replace(/([^g]|^)(g)(i|e|y)/g, '$1j$3');\n s = s.replace(/gg/g, 'g');\n return s.replace(/g/g, 'k');\n },\n dropH: (s) => {\n return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2');\n },\n changeCK: (s) => {\n return s.replace(/ck/g, 'k');\n },\n changePH: (s) => {\n return s.replace(/ph/g, 'f');\n },\n changeQ: (s) => {\n return s.replace(/q/g, 'k');\n },\n changeS: (s) => {\n return s.replace(/s(h|io|ia)/g, 'x$1');\n },\n changeT: (s) => {\n s = s.replace(/t(ia[^n]|io)/g, 'x$1');\n return s.replace(/th/, '0');\n },\n dropT: (s) => {\n return s.replace(/tch/g, 'ch');\n },\n changeV: (s) => {\n return s.replace(/v/g, 'f');\n },\n changeWH: (s) => {\n return s.replace(/^wh/, 'w');\n },\n dropW: (s) => {\n return s.replace(/w([^aeiou]|$)/g, '$1');\n },\n changeX: (s) => {\n s = s.replace(/^x/, 's');\n return s.replace(/x/g, 'ks');\n },\n dropY: (s) => {\n return s.replace(/y([^aeiou]|$)/g, '$1');\n },\n changeZ: (s) => {\n return s.replace(/z/, 's');\n },\n dropVowels: (s) => {\n return s; //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, '');\n }\n};\nmodule.exports = transformations;","'use strict';\n//a js version of the metaphone (#1) algorithm\n//adapted from the work of Chris Umbel\n// https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js\n\nconst fns = require(\"./transformations.js\");\n\nconst metaphone = function(s) {\n s = fns.dedup(s);\n s = fns.dropInitialLetters(s);\n s = fns.dropBafterMAtEnd(s);\n s = fns.changeCK(s);\n s = fns.cchange(s);\n s = fns.dchange(s);\n s = fns.dropG(s);\n s = fns.changeG(s);\n s = fns.dropH(s);\n s = fns.changePH(s);\n s = fns.changeQ(s);\n s = fns.changeS(s);\n s = fns.changeX(s);\n s = fns.changeT(s);\n s = fns.dropT(s);\n s = fns.changeV(s);\n s = fns.changeWH(s);\n s = fns.dropW(s);\n s = fns.dropY(s);\n s = fns.changeZ(s);\n s = fns.dropVowels(s);\n return s.trim();\n};\n\nmodule.exports = metaphone;\n","const metaphone = require('./metaphone')\n\n/** adds .numbers() method */\nconst plugin = function (Doc) {\n Doc.prototype.pronounce = function (opts = {}) {\n opts.normal = true\n let json = this.json(opts)\n json.forEach((obj) => {\n obj.pronounce = metaphone(obj.normal)\n })\n return json\n }\n}\n\nmodule.exports = plugin\n"],"names":["transformations","dedup","s","replace","dropInitialLetters","match","substr","length","dropBafterMAtEnd","cchange","trim","dchange","dropG","changeG","dropH","changeCK","changePH","changeQ","changeS","changeT","dropT","changeV","changeWH","dropW","changeX","dropY","changeZ","dropVowels","metaphone","fns","plugin","Doc","prototype","pronounce","opts","normal","json","forEach","obj"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/pronounce/builds/compromise-pronounce.min.js b/plugins/pronounce/builds/compromise-pronounce.min.js new file mode 100644 index 000000000..418c5426a --- /dev/null +++ b/plugins/pronounce/builds/compromise-pronounce.min.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).compromiseRedact=n()}(this,(function(){"use strict";var e={dedup:function(e){return e.replace(/([^c])\1/g,"$1")},dropInitialLetters:function(e){return e.match(/^(kn|gn|pn|ae|wr)/)?e.substr(1,e.length-1):e},dropBafterMAtEnd:function(e){return e.replace(/mb$/,"m")},cchange:function(e){return(e=(e=(e=e.replace(/([^s]|^)(c)(h)/g,"$1x$3").trim()).replace(/cia/g,"xia")).replace(/c(i|e|y)/g,"s$1")).replace(/c/g,"k")},dchange:function(e){return(e=e.replace(/d(ge|gy|gi)/g,"j$1")).replace(/d/g,"t")},dropG:function(e){return(e=e.replace(/gh(^$|[^aeiou])/g,"h$1")).replace(/g(n|ned)$/g,"$1")},changeG:function(e){return(e=(e=(e=e.replace(/gh/g,"f")).replace(/([^g]|^)(g)(i|e|y)/g,"$1j$3")).replace(/gg/g,"g")).replace(/g/g,"k")},dropH:function(e){return e.replace(/([aeiou])h([^aeiou]|$)/g,"$1$2")},changeCK:function(e){return e.replace(/ck/g,"k")},changePH:function(e){return e.replace(/ph/g,"f")},changeQ:function(e){return e.replace(/q/g,"k")},changeS:function(e){return e.replace(/s(h|io|ia)/g,"x$1")},changeT:function(e){return(e=e.replace(/t(ia[^n]|io)/g,"x$1")).replace(/th/,"0")},dropT:function(e){return e.replace(/tch/g,"ch")},changeV:function(e){return e.replace(/v/g,"f")},changeWH:function(e){return e.replace(/^wh/,"w")},dropW:function(e){return e.replace(/w([^aeiou]|$)/g,"$1")},changeX:function(e){return(e=e.replace(/^x/,"s")).replace(/x/g,"ks")},dropY:function(e){return e.replace(/y([^aeiou]|$)/g,"$1")},changeZ:function(e){return e.replace(/z/,"s")},dropVowels:function(e){return e}},n=function(n){return n=e.dedup(n),n=e.dropInitialLetters(n),n=e.dropBafterMAtEnd(n),n=e.changeCK(n),n=e.cchange(n),n=e.dchange(n),n=e.dropG(n),n=e.changeG(n),n=e.dropH(n),n=e.changePH(n),n=e.changeQ(n),n=e.changeS(n),n=e.changeX(n),n=e.changeT(n),n=e.dropT(n),n=e.changeV(n),n=e.changeWH(n),n=e.dropW(n),n=e.dropY(n),n=e.changeZ(n),(n=e.dropVowels(n)).trim()};return function(e){e.prototype.pronounce=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.normal=!0;var r=this.json(e);return r.forEach((function(e){e.pronounce=n(e.normal)})),r}}})); diff --git a/plugins/pronounce/builds/compromise-pronounce.mjs b/plugins/pronounce/builds/compromise-pronounce.mjs new file mode 100644 index 000000000..d81fa45ab --- /dev/null +++ b/plugins/pronounce/builds/compromise-pronounce.mjs @@ -0,0 +1,130 @@ +/* compromise-pronounce 0.0.2 MIT */ +var transformations = { + dedup: function dedup(s) { + return s.replace(/([^c])\1/g, '$1'); + }, + dropInitialLetters: function dropInitialLetters(s) { + if (s.match(/^(kn|gn|pn|ae|wr)/)) { + return s.substr(1, s.length - 1); + } + + return s; + }, + dropBafterMAtEnd: function dropBafterMAtEnd(s) { + return s.replace(/mb$/, 'm'); + }, + cchange: function cchange(s) { + s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim(); + s = s.replace(/cia/g, 'xia'); + s = s.replace(/c(i|e|y)/g, 's$1'); + return s.replace(/c/g, 'k'); + }, + dchange: function dchange(s) { + s = s.replace(/d(ge|gy|gi)/g, 'j$1'); + return s.replace(/d/g, 't'); + }, + dropG: function dropG(s) { + s = s.replace(/gh(^$|[^aeiou])/g, 'h$1'); + return s.replace(/g(n|ned)$/g, '$1'); + }, + changeG: function changeG(s) { + s = s.replace(/gh/g, 'f'); + s = s.replace(/([^g]|^)(g)(i|e|y)/g, '$1j$3'); + s = s.replace(/gg/g, 'g'); + return s.replace(/g/g, 'k'); + }, + dropH: function dropH(s) { + return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2'); + }, + changeCK: function changeCK(s) { + return s.replace(/ck/g, 'k'); + }, + changePH: function changePH(s) { + return s.replace(/ph/g, 'f'); + }, + changeQ: function changeQ(s) { + return s.replace(/q/g, 'k'); + }, + changeS: function changeS(s) { + return s.replace(/s(h|io|ia)/g, 'x$1'); + }, + changeT: function changeT(s) { + s = s.replace(/t(ia[^n]|io)/g, 'x$1'); + return s.replace(/th/, '0'); + }, + dropT: function dropT(s) { + return s.replace(/tch/g, 'ch'); + }, + changeV: function changeV(s) { + return s.replace(/v/g, 'f'); + }, + changeWH: function changeWH(s) { + return s.replace(/^wh/, 'w'); + }, + dropW: function dropW(s) { + return s.replace(/w([^aeiou]|$)/g, '$1'); + }, + changeX: function changeX(s) { + s = s.replace(/^x/, 's'); + return s.replace(/x/g, 'ks'); + }, + dropY: function dropY(s) { + return s.replace(/y([^aeiou]|$)/g, '$1'); + }, + changeZ: function changeZ(s) { + return s.replace(/z/, 's'); + }, + dropVowels: function dropVowels(s) { + return s; //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, ''); + } +}; +var transformations_1 = transformations; + +//adapted from the work of Chris Umbel +// https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js + + +var metaphone = function metaphone(s) { + s = transformations_1.dedup(s); + s = transformations_1.dropInitialLetters(s); + s = transformations_1.dropBafterMAtEnd(s); + s = transformations_1.changeCK(s); + s = transformations_1.cchange(s); + s = transformations_1.dchange(s); + s = transformations_1.dropG(s); + s = transformations_1.changeG(s); + s = transformations_1.dropH(s); + s = transformations_1.changePH(s); + s = transformations_1.changeQ(s); + s = transformations_1.changeS(s); + s = transformations_1.changeX(s); + s = transformations_1.changeT(s); + s = transformations_1.dropT(s); + s = transformations_1.changeV(s); + s = transformations_1.changeWH(s); + s = transformations_1.dropW(s); + s = transformations_1.dropY(s); + s = transformations_1.changeZ(s); + s = transformations_1.dropVowels(s); + return s.trim(); +}; + +var metaphone_1 = metaphone; + +/** adds .numbers() method */ + +var plugin = function plugin(Doc) { + Doc.prototype.pronounce = function () { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.normal = true; + var json = this.json(opts); + json.forEach(function (obj) { + obj.pronounce = metaphone_1(obj.normal); + }); + return json; + }; +}; + +var src = plugin; + +export default src; diff --git a/plugins/pronounce/package-lock.json b/plugins/pronounce/package-lock.json new file mode 100644 index 000000000..3ec6e3a83 --- /dev/null +++ b/plugins/pronounce/package-lock.json @@ -0,0 +1,938 @@ +{ + "name": "compromise-pronounce", + "version": "0.0.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.1.tgz", + "integrity": "sha512-SaVUoaLDg3KnIXC5IBNIspr1APTYDzk05VaYcI6qz+0XX3ZlSCwAkfAhNSOxfd5GAdcm/63Noi4TowOY9MpcDg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.0", + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, + "@rollup/plugin-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.0.1.tgz", + "integrity": "sha512-soxllkhOGgchswBAAaTe7X9G80U2tjjHvXv0sBrriLJcC/89PkP59iTrKPOfbz3SjX088mKDmMhAscuyLz8ZSg==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.5.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.0.0.tgz", + "integrity": "sha512-+vOx2+WMBMFotYKM3yYeDGZxIvcQ7yO4g+SuKDFsjKaq8Lw3EPgfB6qNlp8Z/3ceDCEhHvC9/b+PgBGwDQGbzQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.0", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.11.1" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "14.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.1.tgz", + "integrity": "sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-callable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", + "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", + "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "re-emitter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", + "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "dev": true + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "rollup": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.30.1.tgz", + "integrity": "sha512-Uus8mwQXwaO+ZVoNwBcXKhT0AvycFCBW/W8VZtkpVGsotRllWk9oldfCjqWmTnFRI0y7x6BnEqSqc65N+/YdBw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", + "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-filesize-check": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", + "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", + "dev": true + }, + "rollup-plugin-terser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz", + "integrity": "sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^2.1.2", + "terser": "^4.6.2" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "requires": { + "through": "2" + } + }, + "string.prototype.trim": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz", + "integrity": "sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", + "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tap-dancer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.2.0.tgz", + "integrity": "sha512-SKUl8jHmYf/7rugeFTwYGpguRi43zqOTVZOfeh3DKCAlazZerdXd11ER5kNVbsbdWc5FB8wwjlZhjTc0W69iGQ==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "tap-out": "3.0.0" + } + }, + "tap-out": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", + "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "dev": true, + "requires": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + } + }, + "tape": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.0.tgz", + "integrity": "sha512-J/hvA+GJnuWJ0Sj8Z0dmu3JgMNU+MmusvkCT7+SN4/2TklW18FNCp/UuHIEhPZwHfy4sXfKYgC7kypKg4umbOw==", + "dev": true, + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.0", + "object-inspect": "~1.7.0", + "resolve": "~1.14.2", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "dependencies": { + "resolve": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", + "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/plugins/pronounce/package.json b/plugins/pronounce/package.json new file mode 100644 index 000000000..ae105f8d3 --- /dev/null +++ b/plugins/pronounce/package.json @@ -0,0 +1,51 @@ +{ + "name": "compromise-pronounce", + "description": "plugin for nlp-compromise", + "version": "0.0.2", + "author": "Spencer Kelly (http://spencermounta.in)", + "main": "./builds/compromise-pronounce.js", + "unpkg": "./builds/compromise-pronounce.min.js", + "module": "./builds/compromise-pronounce.mjs", + "types": "types/index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/spencermountain/compromise.git" + }, + "scripts": { + "test": "tape \"./tests/**/*.test.js\" | tap-dancer --color always", + "testb": "TESTENV=prod tape \"./tests/**/*.test.js\" | tap-dancer --color always", + "watch": "amble ./scratch.js", + "build": "rollup -c --silent" + }, + "prettier": { + "trailingComma": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "printWidth": 100 + }, + "files": [ + "builds/", + "types/index.d.ts" + ], + "eslintIgnore": [ + "builds/*.js" + ], + "peerDependencies": { + "compromise": "^12.*.*", + "compromise-dates": "0.0.5" + }, + "dependencies": {}, + "devDependencies": { + "@rollup/plugin-commonjs": "11.0.1", + "@rollup/plugin-json": "4.0.1", + "@rollup/plugin-node-resolve": "7.0.0", + "rollup": "1.30.1", + "rollup-plugin-babel": "4.3.3", + "rollup-plugin-filesize-check": "0.0.1", + "rollup-plugin-terser": "5.2.0", + "tap-dancer": "0.2.0", + "tape": "4.13.0" + }, + "license": "MIT" +} diff --git a/plugins/pronounce/rollup.config.js b/plugins/pronounce/rollup.config.js new file mode 100644 index 000000000..51f4a88d3 --- /dev/null +++ b/plugins/pronounce/rollup.config.js @@ -0,0 +1,76 @@ +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import resolve from '@rollup/plugin-node-resolve' +import { terser } from 'rollup-plugin-terser' +import babel from 'rollup-plugin-babel' +import sizeCheck from 'rollup-plugin-filesize-check' +const name = 'compromise-pronounce' + +import { version } from './package.json' +const banner = `/* ${name} ${version} MIT */` + +export default [ + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.mjs`, + format: 'esm', + banner: banner, + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + sizeCheck(), + ], + }, + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.js`, + format: 'umd', + sourcemap: true, + name: 'compromiseRedact', + banner: banner, + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + sizeCheck(), + ], + }, + { + input: 'src/index.js', + output: [ + { + file: `builds/${name}.min.js`, + format: 'umd', + name: 'compromiseRedact', + }, + ], + plugins: [ + resolve(), + json(), + commonjs(), + babel({ + babelrc: false, + presets: ['@babel/preset-env'], + }), + terser(), + sizeCheck(), + ], + }, +] diff --git a/plugins/pronounce/src/index.js b/plugins/pronounce/src/index.js new file mode 100644 index 000000000..09c712886 --- /dev/null +++ b/plugins/pronounce/src/index.js @@ -0,0 +1,15 @@ +const metaphone = require('./metaphone') + +/** adds .numbers() method */ +const plugin = function (Doc) { + Doc.prototype.pronounce = function (opts = {}) { + opts.normal = true + let json = this.json(opts) + json.forEach((obj) => { + obj.pronounce = metaphone(obj.normal) + }) + return json + } +} + +module.exports = plugin diff --git a/plugins/pronounce/src/metaphone.js b/plugins/pronounce/src/metaphone.js new file mode 100644 index 000000000..04353d1df --- /dev/null +++ b/plugins/pronounce/src/metaphone.js @@ -0,0 +1,32 @@ +//a js version of the metaphone (#1) algorithm +//adapted from the work of Chris Umbel +// https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js + +const fns = require('./transformations.js') + +const metaphone = function (s) { + s = fns.dedup(s) + s = fns.dropInitialLetters(s) + s = fns.dropBafterMAtEnd(s) + s = fns.changeCK(s) + s = fns.cchange(s) + s = fns.dchange(s) + s = fns.dropG(s) + s = fns.changeG(s) + s = fns.dropH(s) + s = fns.changePH(s) + s = fns.changeQ(s) + s = fns.changeS(s) + s = fns.changeX(s) + s = fns.changeT(s) + s = fns.dropT(s) + s = fns.changeV(s) + s = fns.changeWH(s) + s = fns.dropW(s) + s = fns.dropY(s) + s = fns.changeZ(s) + s = fns.dropVowels(s) + return s.trim() +} + +module.exports = metaphone diff --git a/plugins/pronounce/src/transformations.js b/plugins/pronounce/src/transformations.js new file mode 100644 index 000000000..e3500d827 --- /dev/null +++ b/plugins/pronounce/src/transformations.js @@ -0,0 +1,80 @@ +//individual manipulations of the text +const transformations = { + dedup: (s) => { + return s.replace(/([^c])\1/g, '$1') + }, + dropInitialLetters: (s) => { + if (s.match(/^(kn|gn|pn|ae|wr)/)) { + return s.substr(1, s.length - 1) + } + return s + }, + dropBafterMAtEnd: (s) => { + return s.replace(/mb$/, 'm') + }, + cchange: (s) => { + s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim() + s = s.replace(/cia/g, 'xia') + s = s.replace(/c(i|e|y)/g, 's$1') + return s.replace(/c/g, 'k') + }, + dchange: (s) => { + s = s.replace(/d(ge|gy|gi)/g, 'j$1') + return s.replace(/d/g, 't') + }, + dropG: (s) => { + s = s.replace(/gh(^$|[^aeiou])/g, 'h$1') + return s.replace(/g(n|ned)$/g, '$1') + }, + changeG: (s) => { + s = s.replace(/gh/g, 'f') + s = s.replace(/([^g]|^)(g)(i|e|y)/g, '$1j$3') + s = s.replace(/gg/g, 'g') + return s.replace(/g/g, 'k') + }, + dropH: (s) => { + return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2') + }, + changeCK: (s) => { + return s.replace(/ck/g, 'k') + }, + changePH: (s) => { + return s.replace(/ph/g, 'f') + }, + changeQ: (s) => { + return s.replace(/q/g, 'k') + }, + changeS: (s) => { + return s.replace(/s(h|io|ia)/g, 'x$1') + }, + changeT: (s) => { + s = s.replace(/t(ia[^n]|io)/g, 'x$1') + return s.replace(/th/, '0') + }, + dropT: (s) => { + return s.replace(/tch/g, 'ch') + }, + changeV: (s) => { + return s.replace(/v/g, 'f') + }, + changeWH: (s) => { + return s.replace(/^wh/, 'w') + }, + dropW: (s) => { + return s.replace(/w([^aeiou]|$)/g, '$1') + }, + changeX: (s) => { + s = s.replace(/^x/, 's') + return s.replace(/x/g, 'ks') + }, + dropY: (s) => { + return s.replace(/y([^aeiou]|$)/g, '$1') + }, + changeZ: (s) => { + return s.replace(/z/, 's') + }, + dropVowels: (s) => { + return s //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, ''); + }, +} +module.exports = transformations diff --git a/plugins/pronounce/tests/_lib.js b/plugins/pronounce/tests/_lib.js new file mode 100644 index 000000000..254633449 --- /dev/null +++ b/plugins/pronounce/tests/_lib.js @@ -0,0 +1,12 @@ +if (typeof process !== undefined && typeof module !== undefined) { + let nlp + if (process.env.TESTENV === 'prod') { + nlp = require('../../../') + nlp.extend(require(`../`)) + } else { + nlp = require('../../../src') + nlp.extend(require(`../src`)) + } + + module.exports = nlp +} diff --git a/plugins/pronounce/tests/misc.test.js b/plugins/pronounce/tests/misc.test.js new file mode 100644 index 000000000..ec3f8b49a --- /dev/null +++ b/plugins/pronounce/tests/misc.test.js @@ -0,0 +1,9 @@ +const test = require('tape') +const nlp = require('./_lib') + +test('default', function (t) { + let doc = nlp('phil collins') + let m = doc.pronounce({}) + t.equal(m[0].pronounce, 'fil kolins', 'fil kolins') + t.end() +}) diff --git a/plugins/sentences/src/methods/tense.js b/plugins/sentences/src/methods/tense.js index 78373f8ef..27407134c 100644 --- a/plugins/sentences/src/methods/tense.js +++ b/plugins/sentences/src/methods/tense.js @@ -21,11 +21,11 @@ exports.toPastTense = function () { vb = vb.verbs().toParticiple() obj.verb.replaceWith(vb, false) } else { - //do a normal conjugation + // //do a normal conjugation vb = vb.verbs().toPastTense() obj.verb.replaceWith(vb, false) } - // trailing gerund/future/present are okay, but 'walked and eats' is not + // // trailing gerund/future/present are okay, but 'walked and eats' is not if (obj.object && obj.object.found && obj.object.has('#PresentTense')) { let verbs = obj.object.verbs() verbs.if('#PresentTense').verbs().toPastTense() diff --git a/scratch.js b/scratch.js index ed2c174f0..e2c89704a 100644 --- a/scratch.js +++ b/scratch.js @@ -1,22 +1,34 @@ const nlp = require('./src/index') -const spacetime = require('/Users/spencer/mountain/spacetime/src') -// nlp.verbose(true) +// const spacetime = require('/Users/spencer/mountain/spacetime/src') +nlp.verbose(true) // let txt = require('./scripts/test/speed/_sotu-text.js') -nlp.extend(require('./plugins/numbers/src')) -nlp.extend(require('./plugins/dates/src')) +// nlp.extend(require('./plugins/numbers/src')) +// nlp.extend(require('./plugins/dates/src')) // nlp.extend(require('./plugins/sentences/src')) -// let doc = nlp('april fools').debug() -// console.log(spacetime(dates.date.start).format('{day-short} {month-short} {date} {year}, {time}')) +// let doc = nlp(`before 2017`) +// let today = [2016, 1, 5] // feb 5th, a friday +// let obj = doc.dates({ today: today }).json()[0] +// console.log(spacetime(obj.date.start).format('{nice-day} {year}')) -// let doc = nlp(`once a month`) -let doc = nlp(`March 1929`) +/* //more person false-positives +Vitamin D. +may +ACE +gene +Jennifer antibiotics +in our X-ray Uro-radiology +*/ -// doc.debug() -let dates = doc.dates({ today: { year: 1999 } }).json(0) -console.log(dates) -if (dates.date.end) { - console.log(spacetime(dates.date.end).format('{day-short} {month-short} {date} {year}, {time}')) -} else { - console.log('--') -} +/* //place false-positives +CT +St +*/ + +// let doc = nlp(`ANA, ENA, CCP etc.`) +let doc = nlp(`promising to leave`) +doc.debug() + +// hmmm +// let doc = nlp('a farmer boy is') +// doc.match(`a (word|#Noun+) is`).debug() diff --git a/scripts/test/stress.js b/scripts/test/stress.js index 486933fe2..8df168cbf 100644 --- a/scripts/test/stress.js +++ b/scripts/test/stress.js @@ -3,11 +3,29 @@ const nlp = require('../../src') console.log(`\n\n--- running compromise on 100 random texts---\n`) console.log(' --should take a few minutes--') +/** add spaces at the end */ +const padEnd = function (str = '', width = 10) { + str = str.toString() + while (str.length < width) { + str += ' ' + } + return str +} + for (let i = 0; i < 100; i++) { console.log('\n--- ' + i + ' ---') let txt = corpus.random() - console.log(txt.substr(0, 60).trim() + ' ... ') + // console.log(txt.substr(0, 60).trim() + ' ... ') nlp(txt) + .sentences() + .forEach(s => { + let vb = s.verbs(0) + let subj = vb.subject() + console.log(padEnd(subj.text('reduced'), 16), ' - ', vb.text('reduced')) + // if (!subj.found) { + // console.log(s.text('normal'), '\n') + // } + }) } console.log('\n\n - done!') diff --git a/src/02-tagger/01-init/data/endsWith.js b/src/02-tagger/01-init/data/endsWith.js index b17c6306f..a7a0487f5 100644 --- a/src/02-tagger/01-init/data/endsWith.js +++ b/src/02-tagger/01-init/data/endsWith.js @@ -112,6 +112,7 @@ module.exports = { [/^[a-z]et$/, Verb], ], s: [ + [/.[^aeiou]ises$/, Pres], [/.[rln]ates$/, Pres], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing], diff --git a/src/02-tagger/01-init/data/startsWith.js b/src/02-tagger/01-init/data/startsWith.js index a4fec4701..b051c82f0 100644 --- a/src/02-tagger/01-init/data/startsWith.js +++ b/src/02-tagger/01-init/data/startsWith.js @@ -66,7 +66,7 @@ module.exports = [ [/^[0-9]{1,4}\/[0-9]{1,4}$/, 'Fraction'], //3/2ths //range [/^[0-9.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8 - [/^[0-9.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 + [/^[0-9.]{1,3}(st|nd|rd|th)?[-–][0-9\.]{1,3}(st|nd|rd|th)?$/, 'NumberRange'], //5-7 //with unit [/^[0-9.]+([a-z]{1,4})$/, 'Value'], //like 5tbsp //ordinal diff --git a/src/02-tagger/03-contractions/04-possessive.js b/src/02-tagger/03-contractions/04-possessive.js index 1249882c1..64db0386d 100644 --- a/src/02-tagger/03-contractions/04-possessive.js +++ b/src/02-tagger/03-contractions/04-possessive.js @@ -4,6 +4,11 @@ const banList = { that: true, there: true, } +const hereThere = { + here: true, + there: true, + everywhere: true, +} const isPossessive = (term, pool) => { // if we already know it if (term.tags.Possessive) { @@ -36,6 +41,10 @@ const isPossessive = (term, pool) => { //spencer's house if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false + } return true } //rocket's red glare diff --git a/src/02-tagger/03-contractions/06-ranges.js b/src/02-tagger/03-contractions/06-ranges.js index 11d58d1cd..94d88a504 100644 --- a/src/02-tagger/03-contractions/06-ranges.js +++ b/src/02-tagger/03-contractions/06-ranges.js @@ -1,7 +1,7 @@ -const isRange = /^([0-9]+)[-–—]([0-9]+)$/i +const isRange = /^([0-9]{1,3})[-–—]([0-9]{1,3})$/i //split '2-4' into '2 to 4' -const checkRange = function(term) { +const checkRange = function (term) { if (term.tags.PhoneNumber === true) { return null } diff --git a/src/02-tagger/03-contractions/index.js b/src/02-tagger/03-contractions/index.js index 1ee061d88..85f735c08 100644 --- a/src/02-tagger/03-contractions/index.js +++ b/src/02-tagger/03-contractions/index.js @@ -9,7 +9,7 @@ const checkRange = require('./06-ranges') const checkFrench = require('./07-french') const isNumber = /^[0-9]+$/ -const createPhrase = function(found, doc) { +const createPhrase = function (found, doc) { //create phrase from ['would', 'not'] let phrase = tokenize(found.join(' '), doc.world, doc.pool())[0] //tag it @@ -28,11 +28,15 @@ const createPhrase = function(found, doc) { t.tags.Number = true t.tags.Cardinal = true } + // if no tag, give it a noun + if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true + } }) return phrase } -const contractions = function(doc) { +const contractions = function (doc) { let world = doc.world doc.list.forEach(p => { let terms = p.terms() diff --git a/src/02-tagger/04-correction/_ambig.js b/src/02-tagger/04-correction/_ambig.js new file mode 100644 index 000000000..279491f78 --- /dev/null +++ b/src/02-tagger/04-correction/_ambig.js @@ -0,0 +1,76 @@ +module.exports = { + adverbs: { + // adverbs than can be adjectives + adjectives: [ + 'dark', + 'bright', + 'flat', + 'light', + 'soft', + 'pale', + 'dead', + 'dim', + 'faux', + 'little', + 'wee', + 'sheer', + 'most', + 'near', + 'good', + 'extra', + 'all', + ], + }, + person: { + // names that are dates + dates: ['april', 'june', 'may', 'jan', 'august', 'eve'], + + // names that are adjectives + adjectives: ['misty', 'rusty', 'dusty', 'rich', 'randy'], + + // names that are verbs + verbs: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + + // names that are verbs + places: ['paris', 'alexandria', 'houston', 'kobe', 'salvador', 'sydney'], + + // names that are nouns + nouns: [ + 'art', + 'bill', + 'charity', + 'cliff', + 'daisy', + 'dawn', + 'dick', + 'dolly', + 'faith', + 'gene', + 'holly', + 'hope', + 'jean', + 'jewel', + 'joy', + 'kelvin', + 'kitty', + 'lane', + 'lily', + 'melody', + 'mercedes', + 'miles', + 'olive', + 'penny', + 'ray', + 'reed', + 'robin', + 'rod', + 'rose', + 'sky', + 'summer', + 'trinity', + 'van', + 'viola', + 'violet', + ], + }, +} diff --git a/src/02-tagger/04-correction/fixMisc.js b/src/02-tagger/04-correction/fixMisc.js index c3348e1f5..cc3f8ba00 100644 --- a/src/02-tagger/04-correction/fixMisc.js +++ b/src/02-tagger/04-correction/fixMisc.js @@ -25,7 +25,7 @@ const miscCorrection = function (doc) { m = hasTag(doc, 'FirstName') m.match('#FirstName (#Noun|@titleCase)') .ifNo('^#Possessive') - .ifNo('#Pronoun') + .ifNo('(#Pronoun|#Plural)') .ifNo('@hasComma .') .lastTerm() .tag('#LastName', 'firstname-noun') diff --git a/src/02-tagger/04-correction/matches/01-misc.js b/src/02-tagger/04-correction/matches/01-misc.js index 84b808c73..5ad6a5456 100644 --- a/src/02-tagger/04-correction/matches/01-misc.js +++ b/src/02-tagger/04-correction/matches/01-misc.js @@ -11,6 +11,8 @@ const list = [ reason: 'sometimes-adverb', }, + //i better .. + { match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', group: 0, tag: 'Modal', reason: 'i-better' }, //walking is cool { match: '[#Gerund] #Adverb? not? #Copula', group: 0, tag: 'Activity', reason: 'gerund-copula' }, //walking should be fun diff --git a/src/02-tagger/04-correction/matches/02-dates.js b/src/02-tagger/04-correction/matches/02-dates.js index dfc1aab4c..7151a0410 100644 --- a/src/02-tagger/04-correction/matches/02-dates.js +++ b/src/02-tagger/04-correction/matches/02-dates.js @@ -1,5 +1,6 @@ //Dates: 'june' or 'may' -const dates = '(april|june|may|jan|august|eve)' +const ambig = require('../_ambig') +const dates = `(${ambig.person.dates.join('|')})` let list = [ // ==== Holiday ==== diff --git a/src/02-tagger/04-correction/matches/04-adjective.js b/src/02-tagger/04-correction/matches/03-adjective.js similarity index 58% rename from src/02-tagger/04-correction/matches/04-adjective.js rename to src/02-tagger/04-correction/matches/03-adjective.js index 73896d48c..abc90aa7d 100644 --- a/src/02-tagger/04-correction/matches/04-adjective.js +++ b/src/02-tagger/04-correction/matches/03-adjective.js @@ -1,4 +1,6 @@ -const adjectives = '(misty|rusty|dusty|rich|randy)' +const ambig = require('../_ambig') +const adjectives = `(${ambig.person.adjectives.join('|')})` + let list = [ // all fell apart { match: '[all] #Determiner? #Noun', group: 0, tag: 'Adjective', reason: 'all-noun' }, @@ -16,12 +18,32 @@ let list = [ { match: '[#PastTense] #Singular is', group: 0, tag: 'Adjective', reason: 'smoked-poutine' }, // baked onions are { match: '[#PastTense] #Plural are', group: 0, tag: 'Adjective', reason: 'baked-onions' }, - //a staggering cost - { match: '(a|an) [#Gerund]', group: 0, tag: 'Adjective', reason: 'a|an' }, + // is f*ed up { match: '#Copula [fucked up?]', tag: 'Adjective', reason: 'swears-adjective' }, //jack seems guarded { match: '#Singular (seems|appears) #Adverb? [#PastTense$]', group: 0, tag: 'Adjective', reason: 'seems-filled' }, + + // Gerund-Adjectives - 'amusing, annoying' + //a staggering cost + { match: '(a|an) [#Gerund]', group: 0, tag: 'Adjective', reason: 'a|an' }, + //as amusing as + { match: 'as [#Gerund] as', group: 0, tag: 'Adjective', reason: 'as-gerund-as' }, + // more amusing than + { match: 'more [#Gerund] than', group: 0, tag: 'Adjective', reason: 'more-gerund-than' }, + // very amusing + { match: '(so|very|extremely) [#Gerund]', group: 0, tag: 'Adjective', reason: 'so-gerund' }, + // it was amusing + { + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund', + }, + // found it amusing + { match: '(found|found) it #Adverb? [#Gerund]', group: 0, tag: 'Adjective', reason: 'found-it-gerund' }, + // a bit amusing + { match: 'a (little|bit|wee) bit? [#Gerund]', group: 0, tag: 'Adjective', reason: 'a-bit-gerund' }, ] module.exports = list diff --git a/src/02-tagger/04-correction/matches/03-noun.js b/src/02-tagger/04-correction/matches/04-noun.js similarity index 95% rename from src/02-tagger/04-correction/matches/03-noun.js rename to src/02-tagger/04-correction/matches/04-noun.js index c9bb967b9..b18138305 100644 --- a/src/02-tagger/04-correction/matches/03-noun.js +++ b/src/02-tagger/04-correction/matches/04-noun.js @@ -51,6 +51,8 @@ module.exports = [ { match: '(the|this) [#Verb] #Preposition .', group: 0, tag: 'Noun', reason: 'determiner1' }, //a sense of { match: '#Determiner [#Verb] of', group: 0, tag: 'Noun', reason: 'the-verb-of' }, + //next career move + { match: '#Adjective #Noun+ [#Infinitive] #Copula', group: 0, tag: 'Noun', reason: 'career-move' }, //the threat of force { match: '#Determiner #Noun of [#Verb]', group: 0, tag: 'Noun', reason: 'noun-of-noun' }, //the western line @@ -78,6 +80,9 @@ module.exports = [ { match: '(the|those|these) #Adjective? [#PresentTense]', group: 0, tag: 'Noun', reason: 'det-pres' }, { match: '(the|those|these) #Adjective? [#PastTense]', group: 0, tag: 'Noun', reason: 'det-past' }, + // this swimming + { match: '(this|that) [#Gerund]', group: 0, tag: 'Noun', reason: 'this-gerund' }, + //air-flow { match: '(#Noun && @hasHyphen) #Verb', tag: 'Noun', reason: 'hyphen-verb' }, //is no walk diff --git a/src/02-tagger/04-correction/matches/07-verbs.js b/src/02-tagger/04-correction/matches/07-verbs.js index d7738f051..203ccae7d 100644 --- a/src/02-tagger/04-correction/matches/07-verbs.js +++ b/src/02-tagger/04-correction/matches/07-verbs.js @@ -1,6 +1,15 @@ -const verbs = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)' +const ambig = require('../_ambig') +const verbs = `(${ambig.person.verbs.join('|')})` let list = [ + // adj -> gerund + // amusing his aunt + { match: '[#Adjective] #Possessive #Noun', group: 0, tag: 'Gerund', reason: 'gerund-his-noun' }, + // loving you + { match: '[#Adjective] (us|you)', group: 0, tag: 'Gerund', reason: 'loving-you' }, + // slowly stunning + { match: '(slowly|quickly) [#Adjective]', group: 0, tag: 'Gerund', reason: 'slowly-adj' }, + // ==== Tense ==== //he left { match: '#Noun #Adverb? [left]', group: 0, tag: 'PastTense', reason: 'left-verb' }, @@ -97,14 +106,19 @@ let list = [ { match: '#Copula [#Adjective to] #Verb', group: 0, tag: 'Verb', reason: 'adj-to' }, // open the door { match: '[open] #Determiner', group: 0, tag: 'Infinitive', reason: 'open-the' }, + // compromises are possible + { match: '[#PresentTense] (are|were|was) #Adjective', group: 0, tag: 'Plural', reason: 'compromises-are-possible' }, // would wade { match: `#Modal [${verbs}]`, group: 0, tag: 'Verb', reason: 'would-mark' }, { match: `#Adverb [${verbs}]`, group: 0, tag: 'Verb', reason: 'really-mark' }, + //to mark + { match: '(to|#Modal) [mark]', group: 0, tag: 'PresentTense', reason: 'to-mark' }, + // wade smith { match: `${verbs} #Person`, tag: 'Person', reason: 'rob-smith' }, // wade m. Cooper - { match: `${verbs} #Acronym? #ProperNoun`, tag: 'Person', reason: 'rob-a-smith' }, + { match: `${verbs} #Acronym #ProperNoun`, tag: 'Person', reason: 'rob-a-smith' }, // damn them { match: '[shit] (#Determiner|#Possessive|them)', group: 0, tag: 'Verb', reason: 'swear1-verb' }, diff --git a/src/02-tagger/04-correction/matches/08-place.js b/src/02-tagger/04-correction/matches/08-place.js index e3724dfb8..740a5ef18 100644 --- a/src/02-tagger/04-correction/matches/08-place.js +++ b/src/02-tagger/04-correction/matches/08-place.js @@ -1,4 +1,6 @@ -const places = '(paris|alexandria|houston|kobe|salvador|sydney)' +const ambig = require('../_ambig') +const places = `(${ambig.person.verbs.join('|')})` + let list = [ // ==== Region ==== //West Norforlk diff --git a/src/02-tagger/04-correction/matches/10-people.js b/src/02-tagger/04-correction/matches/10-people.js index 9f44f31f8..b8148d9f3 100644 --- a/src/02-tagger/04-correction/matches/10-people.js +++ b/src/02-tagger/04-correction/matches/10-people.js @@ -1,6 +1,5 @@ -const nouns = - '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)' - +const ambig = require('../_ambig') +const nouns = `(${ambig.person.nouns.join('|')})` const months = '(january|april|may|june|jan|sep)' //summer|autumn let list = [ @@ -33,7 +32,13 @@ let list = [ //my buddy { match: '#Possessive [#FirstName]', group: 0, tag: 'Person', reason: 'possessive-name' }, - { match: '#Acronym #ProperNoun', tag: 'Person', reason: 'acronym-titlecase', safe: true }, //ludwig van beethovan + { + match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', + tag: 'Person', + reason: 'titlecase-acronym-titlecase', + safe: true, + }, //ludwig van beethovan + { match: '#Acronym #LastName', tag: 'Person', reason: 'acronym-latname', safe: true }, //jk rowling { match: '#Person (jr|sr|md)', tag: 'Person', reason: 'person-honorific' }, //peter II { match: '#Person #Person the? #RomanNumeral', tag: 'Person', reason: 'roman-numeral' }, //'Professor Fink', 'General McCarthy' { match: '#FirstName [/^[^aiurck]$/]', group: 0, tag: ['Acronym', 'Person'], reason: 'john-e' }, //Doctor john smith jr @@ -44,7 +49,11 @@ let list = [ //j.k Rowling { match: '#Noun van der? #Noun', tag: 'Person', reason: 'von der noun', safe: true }, //king of spain - { match: '(king|queen|prince|saint|lady) of? #Noun', tag: 'Person', reason: 'king-of-noun', safe: true }, + { match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true }, + //lady Florence + { match: '(prince|lady) #Place', tag: 'Person', reason: 'lady-place' }, + //saint Foo + { match: '(king|queen|prince|saint) #ProperNoun', tag: 'Person', reason: 'saint-foo' }, //Foo U Ford { match: '[#ProperNoun] #Person', group: 0, tag: 'Person', reason: 'proper-person', safe: true }, // al sharpton @@ -61,6 +70,7 @@ let list = [ { match: '#Honorific #FirstName? #ProperNoun', tag: 'Person', reason: 'dr-john-Title' }, //peter the great { match: '#FirstName the #Adjective', tag: 'Person', reason: 'name-the-great' }, + //very common-but-ambiguous lastnames { match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)', @@ -82,11 +92,13 @@ let list = [ // remind june { match: `#Infinitive [${months}]`, group: 0, tag: 'Person', reason: 'infinitive-person' }, // may waits for - { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, + // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, // may waits to - { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, + // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, // april will { match: `[${months}] #Modal`, group: 0, tag: 'Person', reason: 'ambig-modal' }, + // may be + { match: `[may] be`, group: 0, tag: 'Verb', reason: 'may-be' }, // would april { match: `#Modal [${months}]`, group: 0, tag: 'Person', reason: 'modal-ambig' }, // it is may diff --git a/src/02-tagger/04-correction/matches/11-adverbs.js b/src/02-tagger/04-correction/matches/11-adverbs.js new file mode 100644 index 000000000..648fbb762 --- /dev/null +++ b/src/02-tagger/04-correction/matches/11-adverbs.js @@ -0,0 +1,13 @@ +const ambig = require('../_ambig') +const adjectives = `(${ambig.adverbs.adjectives.join('|')})` + +let list = [ + // a bit cold + { match: 'a [(little|bit|wee) bit?] #Adjective', group: 0, tag: 'Adverb', reason: 'a-bit-cold' }, + // dark green + { match: `[${adjectives}] #Adjective`, group: 0, tag: 'Adverb', reason: 'dark-green' }, + // kinda sparkly + { match: `#Adverb [#Adverb]$`, group: 0, tag: 'Adjective', reason: 'kinda-sparkly' }, + { match: `#Adverb [#Adverb] (and|or|then)`, group: 0, tag: 'Adjective', reason: 'kinda-sparkly-and' }, +] +module.exports = list diff --git a/src/02-tagger/04-correction/matches/index.js b/src/02-tagger/04-correction/matches/index.js index b6e60c42b..2053cb5b0 100644 --- a/src/02-tagger/04-correction/matches/index.js +++ b/src/02-tagger/04-correction/matches/index.js @@ -3,17 +3,18 @@ const unique = require('../_unique') let matches = [] matches = matches.concat(require('./01-misc')) matches = matches.concat(require('./02-dates')) -matches = matches.concat(require('./03-noun')) -matches = matches.concat(require('./04-adjective')) +matches = matches.concat(require('./03-adjective')) +matches = matches.concat(require('./04-noun')) matches = matches.concat(require('./05-adverb')) matches = matches.concat(require('./06-value')) matches = matches.concat(require('./07-verbs')) matches = matches.concat(require('./08-place')) matches = matches.concat(require('./09-org')) matches = matches.concat(require('./10-people')) +matches = matches.concat(require('./11-adverbs')) // cache the easier conditions up-front -const cacheRequired = function(reg) { +const cacheRequired = function (reg) { let needTags = [] let needWords = [] reg.forEach(obj => { @@ -30,7 +31,7 @@ const cacheRequired = function(reg) { return { tags: unique(needTags), words: unique(needWords) } } -const allLists = function(m) { +const allLists = function (m) { let more = [] let lists = m.reg.filter(r => r.oneOf !== undefined) if (lists.length === 1) { diff --git a/src/Phrase/methods/05-json.js b/src/Phrase/methods/05-json.js index bebb1c62b..afad27b9e 100644 --- a/src/Phrase/methods/05-json.js +++ b/src/Phrase/methods/05-json.js @@ -1,5 +1,5 @@ /** return json metadata for this phrase */ -exports.json = function(options = {}, world) { +exports.json = function (options = {}, world) { let res = {} // text data if (options.text) { diff --git a/src/Subset/Clauses.js b/src/Subset/Clauses.js index 66a11d731..b517d4466 100644 --- a/src/Subset/Clauses.js +++ b/src/Subset/Clauses.js @@ -1,11 +1,12 @@ -const addMethod = function(Doc) { +const addMethod = function (Doc) { /** split into approximate sub-sentence phrases */ - Doc.prototype.clauses = function(n) { + Doc.prototype.clauses = function (n) { // an awkward way to disambiguate a comma use let commas = this.if('@hasComma') .notIf('@hasComma @hasComma') //fun, cool... .notIf('@hasComma . .? (and|or) .') //cool, and fun .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' .notIf('@hasComma (too|also)$') //at end of sentence .match('@hasComma') diff --git a/src/Subset/Nouns/index.js b/src/Subset/Nouns/index.js index f926678b2..6bc9b70c8 100644 --- a/src/Subset/Nouns/index.js +++ b/src/Subset/Nouns/index.js @@ -1,12 +1,12 @@ const methods = require('./methods') -const addMethod = function(Doc) { +const addMethod = function (Doc) { /** */ class Nouns extends Doc {} // add-in our methods Object.assign(Nouns.prototype, methods) - Doc.prototype.nouns = function(n) { + Doc.prototype.nouns = function (n, opts = {}) { // don't split 'paris, france' let keep = this.match('(#City && @hasComma) (#Region|#Country)') // but split the other commas @@ -14,13 +14,21 @@ const addMethod = function(Doc) { // combine them back together m = m.concat(keep) + // don't combine over scare-quotes + let quotes = m.quotations() + if (quotes.found) { + m = m.splitOn(quotes.eq(0)) + } + m = m.match('#Noun+ (of|by)? the? #Noun+?') //nouns that we don't want in these results, for weird reasons - m = m.not('#Pronoun') - m = m.not('(there|these)') - m = m.not('(#Month|#WeekDay)') //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, - m = m.not('(my|our|your|their|her|his)') + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun') + m = m.not('(there|these)') + m = m.not('(#Month|#WeekDay)') //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + m = m.not('(my|our|your|their|her|his)') + } m = m.not('(of|for|by|the)$') if (typeof n === 'number') { diff --git a/src/Subset/Verbs/conjugate/imperative.js b/src/Subset/Verbs/conjugate/imperative.js new file mode 100644 index 000000000..f976dea23 --- /dev/null +++ b/src/Subset/Verbs/conjugate/imperative.js @@ -0,0 +1,29 @@ +// verb-phrases that are orders - 'close the door' +// these should not be conjugated +exports.isImperative = function (parsed) { + // do the dishes + if (parsed.auxiliary.has('do')) { + return true + } + // speak the truth + // if (parsed.verb.has('^#Infinitive')) { + // // 'i speak' is not imperative + // if (parsed.subject.has('(i|we|you|they)')) { + // return false + // } + // return true + // } + return false +} + +// // basically, don't conjugate it +// exports.toImperative = function (parsed) { +// let str = parsed.original.text() +// let res = { +// PastTense: str, +// PresentTense: str, +// FutureTense: str, +// Infinitive: str, +// } +// return res +// } diff --git a/src/Subset/Verbs/conjugate/index.js b/src/Subset/Verbs/conjugate/index.js index 73a6accb9..ce0356013 100644 --- a/src/Subset/Verbs/conjugate/index.js +++ b/src/Subset/Verbs/conjugate/index.js @@ -15,6 +15,18 @@ const conjugate = function (parsed, world) { return doModal(parsed, world) } + // dont conjugate imperative form - 'close the door' + // if (parsed.auxiliary.has('do')) { + // let str = parsed.original.text() + // let res = { + // PastTense: str, + // PresentTense: str, + // FutureTense: str, + // Infinitive: str, + // } + // return res + // } + let hasHyphen = parsed.verb.termList(0).hasHyphen() let infinitive = toInfinitive(parsed, world) diff --git a/src/Subset/Verbs/getSubject.js b/src/Subset/Verbs/getSubject.js new file mode 100644 index 000000000..35bfa2aac --- /dev/null +++ b/src/Subset/Verbs/getSubject.js @@ -0,0 +1,15 @@ +// who/what is doing this verb? +// get the prior verb most-likely doing this action +// (it can not-exist - 'close the door') +const getSubject = function (vb) { + let behind = vb.lookBehind() + let lastNoun = behind.nouns(null, { keep_anaphora: true }).last() + + // support 'that' and 'this' + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last() + lastNoun = lastNoun.tag('#Noun').nouns() + } + return lastNoun +} +module.exports = getSubject diff --git a/src/Subset/Verbs/index.js b/src/Subset/Verbs/index.js index 041e46855..2280151ce 100644 --- a/src/Subset/Verbs/index.js +++ b/src/Subset/Verbs/index.js @@ -19,7 +19,12 @@ const addMethod = function (Doc) { let keep = match.match('(#Adverb && @hasComma) #Adverb') // // but split the other commas let m = match.not(keep).splitAfter('@hasComma') - // // combine them back together + // i was shocked looking at... + let gerund = m.match('#PastTense #Gerund') + if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + m = m.splitBefore(gerund.match('#Gerund')) + } + // combine them back together m = m.concat(keep) m.sort('index') //handle slashes? diff --git a/src/Subset/Verbs/methods.js b/src/Subset/Verbs/methods.js index ddf0c3caf..83ddca45b 100644 --- a/src/Subset/Verbs/methods.js +++ b/src/Subset/Verbs/methods.js @@ -1,7 +1,9 @@ const toNegative = require('./toNegative') const parseVerb = require('./parse') const isPlural = require('./isPlural') +const getSubject = require('./getSubject') const conjugate = require('./conjugate') +const isImperative = require('./conjugate/imperative').isImperative const { toParticiple, useParticiple } = require('./participle') // remove any tense-information in auxiliary verbs @@ -114,6 +116,18 @@ module.exports = { toParticiple(parsed, this.world) return } + if (isImperative(parsed)) { + return + } + // don't conjugate 'to be' + if (vb.has('be') && vb.lookBehind('to$').found) { + return + } + // handle 'is raining' -> 'was raining' + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was') + return + } let str = conjugate(parsed, this.world).PastTense if (str) { parsed = makeNeutral(parsed) @@ -237,4 +251,15 @@ module.exports = { } return this.remove('#Negative') }, + /** who, or what is doing this action? */ + subject: function () { + let list = [] + this.forEach(p => { + let found = getSubject(p) + if (found.list[0]) { + list.push(found.list[0]) + } + }) + return this.buildFrom(list) + }, } diff --git a/src/Subset/Verbs/parse.js b/src/Subset/Verbs/parse.js index 7e1c9e462..05589a240 100644 --- a/src/Subset/Verbs/parse.js +++ b/src/Subset/Verbs/parse.js @@ -1,3 +1,4 @@ +const getSubject = require('./getSubject') // turn 'would not really walk up' into parts const parseVerb = function (vb) { let parsed = { @@ -6,6 +7,8 @@ const parseVerb = function (vb) { auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), // 'will' of 'will go' particle: vb.match('#Particle'), // 'up' of 'pull up' verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject(vb), } // fallback, if no verb found if (!parsed.verb.found) { diff --git a/src/Subset/Verbs/toInfinitive/index.js b/src/Subset/Verbs/toInfinitive/index.js index ced7b6db2..5f197117c 100644 --- a/src/Subset/Verbs/toInfinitive/index.js +++ b/src/Subset/Verbs/toInfinitive/index.js @@ -5,7 +5,7 @@ const toInfinitive = function (parsed, world) { // verb.debug() //1. if it's already infinitive - let str = verb.text('normal') + let str = verb.text('reduced') if (verb.has('#Infinitive')) { return str } diff --git a/src/Subset/index.js b/src/Subset/index.js index aabeaa972..ce605562b 100644 --- a/src/Subset/index.js +++ b/src/Subset/index.js @@ -13,7 +13,7 @@ const subclass = [ require('./People'), ] -const extend = function(Doc) { +const extend = function (Doc) { // add basic methods Object.keys(subsets).forEach(k => (Doc.prototype[k] = subsets[k])) // add subclassed methods diff --git a/src/World/_data.js b/src/World/_data.js index f92fbd51f..57d8e1ef9 100644 --- a/src/World/_data.js +++ b/src/World/_data.js @@ -13,40 +13,40 @@ module.exports={ "Plural": "true¦records", "Conjunction": "true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:0Z;1:12;a0Yb0Mc0Dd06e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Ts 2;doll0Fst0H; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Y;ep3ri1u2;de0Rff;faOmoO;st0Nze;al0i1o2;om,se;a4i0Kl06r3u2;dMrpoE;erogaWobl0P;rt,te0J;bjTceHthers;othi1umb0F;a4ee05o2;del,m2nopo0th0D;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", - "Honorific": "true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", + "Singular": "true¦0:10;1:13;a0Zb0Nc0Ed07e04fZgUhQiPjel0kitty,lOmKnJoIpEquestion mark,rCs7t4u2womY;nc0Us 2;doll0Gst0I; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;i5ky,omeone,t2uper bowl,yst0Z;ep3ri1u2;de0Sff;faOmoO;st0Oze;al0i1o2;om,se;a4i0Ll07r3u2;dMrpoE;erogaXobl0Q;rt,te0K;bjUceHthers;othi1umb0G;a4ee06o2;del,m2nopo0rni1th0E;!my;n,yf0;i0unch;ci1nsect;ead start,o2;l0me3u2;se;! run;adf0entlem5irl00laci05od,rand3u2;l0y; slam,fa2mo2;th02;an;a5ella,ly,ol0r3un2;di1;iUo2;ntiXsO;mi0thW;conomy,gg,ner6ven3x2;ampRecu8;i1t;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em", + "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", + "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", - "Uncountable": "true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics", - "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHuG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", + "Uncountable": "true¦0:1F;a1Mb1Ec15d12e0Vf0Pg0Ih0Di09j08knowled1Ll03mVnews,oUpRrMsBt6vi5w1;a3ea06i2oo1;d,l;ldlife,ne;rmth,t0;neg12ol07tae;e4h3oothpaste,r1una;affQou1;ble,sers,t;ermod1Hund0;a,nnis;a9cene05eri0Sh8il7kittl0Snow,o6p4t2u1;g0Vnshi0L;ati1Ge1;am,el;ace19e1;ci0Ned;ap,cc0;k,v0;eep,ingl0K;d08fe13l1nd;m0Wt;a4e2ic1;e,ke0H;c1laxa0Dsearch;ogni0Crea0C;bi0Din;aKe2hys13last6o1ressZ;lit12rk,w0;a0YtrV;bstetr10il,xygen;a6e4ilk,o3u1;mps,s1;ic;nHo0E;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics", + "Infinitive": "true¦0:6K;1:6Y;2:57;3:6W;4:6V;5:5Z;6:67;7:6U;8:6Q;9:6I;A:6S;B:6P;C:6Z;D:6D;E:56;F:5P;a6Cb61c52d4Ae3Uf3Hg3Bh34i2Rj2Pk2Nl2Fm25n22o1Xp1Iques3Ir0Qs05tXuSvOwHyG;awn,ield;aJe1Yhist6iIoGre65;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raC;d0t;aIiGo7;eGsB;!w;l6Cry;nHpGr4se;gra4Mli3Z;dGi7lo5Spub3O;erGo;mi58w1I;aMeLhKoJrHuGwi8;ne,rn;aGe0Mi5Nu8y;de,in,nsf0p,v5F;r2XuD;ank,reat2N;nd,st;lk,rg1Ps7;aZcWeVhTi4Akip,lSmRnee3Jo4YpQtJuGwitD;bmBck,ff0gge8ppHrGspe5;ge,pri1rou4Vvi3;ly,o34;aLeKoJrHuG;dy,mb6;aEeGi3;ngth2Dss,tD;p,re;m,p;in,ke,r0Qy;laFoil,rink6;e1Xi6o3H;am,ip;a2iv0oG;ck,ut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu9fYgXje5lUmTnt,pQquPsKtJvGwa5O;eGiew,o34;al,l,rG;se,t;aEi2u40;eJi8oItG;!o2rG;i5uc1Y;l3rt;mb6nt,r3;e8i2;air,eHlGo3ZreseC;a9y;at;aEemb0i3Vo3;aHeGi3y;a1nt;te,x;a56r0I;act1Wer,le5u1;a11ei3k5IoGyc6;gni2Anci6rd;ch,li29s5G;i1nG;ge,k;aTerSiRlOoMrIuG;b1Zll,mp,rGsh;cha1s4J;ai1eIiCoG;cGdu9greAhibBmi1te8vi2T;eAlaim;di5pa2ss,veC;iCp,rtr3ZsGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo30mBsi8;ck,iCrt4Fss,u1;bJccur,ff0pera7utweIverGwe;co40lap,ta20u1wG;helm;igh;ser3taE;eHotG;e,i9;ed,gle5;aLeKiIoHuG;ltip3Crd0;nit11ve;nGrr10;d,g6us;asu2lt,n0Nr4;intaEna4rHtG;ch,t0;ch,kGry;et;aLeKiIoGu1B;aGck,ok,ve;d,n;ft,ke,mBnGst2Wve;e,k;a2Dc0Et;b0Nck,uG;gh,nD;iGno2Z;ck,ll,ss;am,oEuG;d4mp;gno2mQnGss3C;cOdica7flu0MhNsKtIvG;eGol3;nt,st;erGrodu9;a5fe2;i8tG;aGru5;ll;abBibB;lu1Er1C;agi22pG;lemeCo20ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppGrm,te;en;aKloAove1MrIuG;arGeAi13;ant33d;aGip,umb6;b,sp;in,th0ze;aQeaPiNlLoIracHuncG;ti3D;tu2;cus,lHrG;ce,eca8m,s2V;d,l1Z;aFoG;at,od,w;gu2lGniFx;e,l;r,tu2;il,vG;or;a13cho,le5mSnPstNvalua7xG;a0AcLerKi8pGte17;a16eHi2laEoGreA;rt,se;ct,riG;en9;ci1t;el,han4;abGima7;liF;ab6couXdHfor9ga4han9j03riDsu2t0vG;isi2Qy;!u2;body,er4pG;hasiGow0;ze;a06eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iYor9;aKcHliGmiApl16tinguiF;ke;oGuA;uGv0;ra4;gr1TppG;ear,ro3;cNem,fLliv0ma0Dny,pKsHterG;mi0E;cribe,er3iHtrG;oy;gn,re;a09e08i5osB;eGi09y;at,ct;iIlHrG;ea1;a2i05;de;ma4n9re,te;a0Ae09h06i7l04oJrG;aHeGoAuFy;a7dB;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin9;rt,y;aEin0SrG;a8ibu7ol;iGtitu7;d0st;iHoGroC;rm;gu2rm;rn;biLfoKmaJpG;a2laE;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aPeMloLoJruFuG;lGry;ly;sh;a8mb,o8rrGth0un9;ow;ck;ar,lHnefBtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waB;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia7uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun9sw0tG;icipa7;ce;lHt0;er;e4ow;ee;rd;aRdIju8mBoR;it;st;!reA;ss;cJhie3knowled4tiva7;te;ge;ve;eIouCu1;se;nt;pt;on", "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", - "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", - "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,p,rd,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,t,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", + "City": "true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1ern1Mi0;en2Hlni2Z;lenc2Uncouv0Gr2Gughn;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg", + "Abbreviation": "true¦a0Tb0Qc0Kd0Ie0Ff0Cg0Ah08i06j04k02l00mRnOoNpIqHrFs9t6u5v2w0yb,µg;is0r,y0L;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;b1ce,d,e0sp;l,mp,nn,x;!l,sp;ask,e3fc,gt,i2q1r,s,t,u0;pt,rg;! ft;r,tu;c,nVp0;!t;b,d,e0;pSs,v;t,ue;a,d,enn3hd,l,p,r1s0t,vt;!eud;ef,o0;b,f,n;!a;ct,kla,nt,z;e0ov;b0e;!r;a7b,d,essrs,g,i4l3m2p1rHs0t;!tr;h,s;!e;!le;!n1s0;c,ter;!n;!j,r,sc;at,b,it,lb,m,ng,t0x;!d;an6b,g,m0;!ph;an,d,r,u0;l,n;a,da,e,n0;c,f;g,on,r0wy,z;!s;a0b,en,ov;!l;e1ig,l0m,r,t,y;! oz,a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0g,ist,l,m,r;c,f,pt,t;a3ca,g,l,m2o0pl,res,yn;!l0mdr,nn,rp;!o;!dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", "Country": "true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", "Region": "true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma", - "FemaleName": "true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:FS;6:ER;7:EP;8:GF;9:EZ;A:GB;B:E5;C:G8;D:FO;E:FL;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et7onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s5;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmCAra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lC;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaE;chGe,i0mo0n5EquCDvDy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et7in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s5;cy,et7;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eD;h75il9t2;a,cSgOiJjor2l6In2s5tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lCna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri7;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alCd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", - "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", + "FemaleName": "true¦0:FX;1:G1;2:FQ;3:FC;4:FB;5:FR;6:EQ;7:EO;8:GE;9:EY;A:GA;B:E4;C:G7;D:FN;E:FK;F:EF;aE1bD3cB7dAHe9Ff90g8Gh82i7Rj6Tk5Zl4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7DeHol1TvG;et7onB8;le0sen3;an9endBMhiB3iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9WenG0;kCYtor3;da,l8Unus,rG;a,nGoniD1;a,iDB;leGnesEB;nDKrG;i1y;aSePhNiMoJrGu6y4;acG2iGu0E;c3na,sG;h9Lta;nHrG;a,i;i9Iya;a5HffaCFna,s5;al3eGomasi0;a,l8Fo6Wres1;g7To6VrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs5tGwa0;ia0um;a,yn;iGya;a,ka,s5;a4e4iGmC9ra;!ka;a,t5;at5it5;a05carlet2Ye04hUiSkye,oQtMuHyG;bFIlvi1;e,sHzG;an2Tet7ie,y;anGi8;!a,e,nG;aEe;aIeG;fGl3DphG;an2;cF7r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh74;dy;aKeGirlBKo0y6;ba,e0i6lIrG;iGrBOyl;!d6Z;ia,lBU;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Xre0;bMdLi9lKmIndHrGs5vannaE;aEi0;ra,y;aGi4;nt5ra;lBMome;e,ie;in1ri0;a02eXhViToHuG;by,thBJ;bQcPlOnNsHwe0xG;an93ie,y;aHeGie,lC;ann8ll1marBEtB;!lGnn1;iGyn;e,nG;a,d7V;da,i,na;an9;hel52io;bin,erByn;a,cGkki,na,ta;helBYki;ea,iannDWoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cAQkaE;chGe,i0mo0n5DquCCvDy0;aCBelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAV;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4No6rvaBAtHulG;a,et7in1;ricGsy,tA7;a,e,ia;ctav3deHfAVlGphAV;a,ga,iv3;l3t7;aQePiJoGy6;eHrG;aEeDma;ll1mi;aKcIkGla,na,s5ta;iGki;!ta;hoB1k8AolG;a,eBG;!mh;l7Sna,risF;dIi5OnHo22taG;li1s5;cy,et7;eAiCN;a01ckenz2eViLoIrignayani,uriBFyG;a,rG;a,na,tAR;i4ll9WnG;a,iG;ca,ka,qB3;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9IlG;iGy;cent,e;red;!e6;ae6el3F;ag4JgKi,lHrG;edi60isFyl;an2iGliF;nGsAL;a,da;!an,han;b08c9Dd06e,g04i03l01nZrKtJuHv6Rx86yGz2;a,bell,ra;de,rG;a,eD;h74il9t2;a,cSgOiJjor2l6Hn2s5tIyG;!aGbe5PjaAlou;m,n9R;a,ha,i0;!aIbAKeHja,lCna,sGt52;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Jueri7;!t;!ry;et3HiB;elGi60y;a,l1;dGon,ue6;akranBy;iGlo35;a,ka,n9;a,re,s2;daGg2;!l2V;alCd2elGge,isBFon0;eiAin1yn;el,le;a0He07iWoQuKyG;d3la,nG;!a,dHe9RnGsAP;!a,e9Q;a,sAN;aB0cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a29e,l24n9;is,l1FrHtt2uG;el6is1;aIeHi8na,rG;a6Yi8;lei,n1tB;!in1;aPbb82d3lLnIsHv3zG;!a,be4Jet7z2;a,et7;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Fe;!n4E;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes5na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as5is5oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stD;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s5;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlCri0y;ar5Cer5Cie,leDr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelCd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lCph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et7iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lCquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aEnaE;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolC;acHetGisel9;a,chD;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et7i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileDkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eDis,la,othGthy;ea,y;an09naEonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraEra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et7iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleD;en,t7;aIeoHotG;il4B;!pat4;ir8rIudG;et7iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot7;n1t7;!sa;d4el1PtG;al,el1O;cHlG;es7i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleDrCy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwCok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaEvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt5yl;adHiG;ce;et7iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes5;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t7;an19elG;le;aYdWeUgQiOja,nHtoGya;inet7n3;!aJeHiGmI;e,ka;!mGt7;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t7;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is5jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naE;c5da,leDmLnslKsG;haElG;inGyW;g,n;!h;ey;ee;en;at5g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lCsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah", + "Place": "true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s", "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", "Date": "true¦ago,t0weekend,yesterd2;mr2o0;d0morrow;ay;!w", "FirstName": "true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is", - "LastName": "true¦0:34;1:3B;2:39;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs2;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu1;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow20ut1N;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils2guy5ix2owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nYu3;an6ns2;ss2;ki0Es5;cks2nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs2;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr1;ayli3ub0;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", - "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEern1iBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", + "LastName": "true¦0:35;1:3C;2:3A;3:2Z;4:2F;5:31;a3Cb32c2Pd2Fe2Cf26g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Voshi1Kun;ma6ng;da,guc20mo28sh22zaR;iao,u;a7eb0il6o3right,u;li3Cs2;gn0lk0ng,tanabe;a6ivaldi;ssilj38zqu1;a9h8i2Ho7r6sui,urn0;an,ynisJ;lst0Prr1Vth;at1Vomps2;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar1lliv2BzuE;a6ein0;l24rm0;sa,u3;rn4th;lva,mmo25ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch1dLtos,z;amBeag20i9o7u6;bio,iz,sD;b6dri1NgIj0Tme25osevelt,ssi,ux,w17;erts,ins2;c6ve0F;ci,hards2;ir1os;aEeAh8ic6ow21ut1O;as6hl0;so;a6illips;m,n1U;ders5et8r7t6;e0Nr4;ez,ry;ers;h22rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1P;ega,iz;a6eils2guy5ix2owak,ym1F;gy,ka6var1L;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Ne6r0V;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin1;!o;aCe8i6op1uo;!n6u;coln,dholm;fe7n0Rr6w0K;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Mo8u7wo6;k,n;mar,znets4;bay6vacs;asZ;ra;hn,rl9to,ur,zl4;aAen9ha3imen1o6u3;h6nZu3;an6ns2;ss2;ki0Fs5;cks2nsse0E;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghOynh;a3ffmann,rvat;mingw7nde6rO;rs2;ay;ns5rrRs7y6;asEes;an4hi6;moK;aAil,o9r7u6;o,tierr1;ay6ub0;li3;m1nzal1;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand1;d7insteHsposi6vaL;to;is2wards;aCeBi9omin8u6;bo6rand;is;gu1;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s2;on;eks7iy8var1;ez;ej6;ev;ams", + "MaleName": "true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:BZ;6:AT;7:9V;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde7sB;!l6t1;de,lCrr5yB;l1ne;lBt3;a93y;aEiBladimir;cCha0kt5CnceBrg9Bva0;!nt;ente,t5A;lentin49n8Y;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l6;lom1nA3uB;leyma8ta;dBl7Jm1;!n6;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n6olfo,ri68;co,ky;bAe9U;cBl6;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub5x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw5;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e7;a78ik;house,o03t1;e,olB;aj;ah,hBk6;a4eB;al,l;hClv2rB;le,ri7v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe7;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha7tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe7;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a7ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd5kGmFrDsCvi3yB;!d5s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d5;an,s0;lEo4FrDuBv6;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr6rge;bri4l5rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym5zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl6nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e7ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne7rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro7y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl6y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n6rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid5ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd5eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on", "Person": "true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", "PhrasalVerb": "true¦0:72;1:6Q;2:7E;3:74;4:6J;5:7H;6:76;7:6P;8:6C;9:6D;A:5I;B:71;C:70;a7Hb63c5Dd5Ae58f46g3Oh38iron0j34k2Zl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit53;d 1k2R;mp0n4Ape0r8s8;eel Bip 7L;aEiD;gh 06rd0;n Br 3D;it 5Kk8lk6rm 0Qsh 74t67v4P;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Gup;ade YiDot0y 28;ckle68p 7A;ne67p Ds4D;d2o6Lup;ck FdEe Dgh5Tme0p o0Dre0;aw3ba4d2in,up;e5Ky 1;by,o6V;ink Drow 5V;ba4ov7up;aDe 4Ill4O;m 1r W;ckCke Elk D;ov7u4O;aDba4d2in,o31up;ba4ft7p4Tw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6P; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1MiD;ke 5Yn2Y;p Drm1P;by,in,o6B;n2Zr 1tc3I;c2Ymp0nd Dr6Hve6y 1;ba4d2up;d2o67up;ar2Vell0ill4UlErDurC;ingCuc8;a33it 3U;be4Crt0;ap 4Eow B;ash 4Zoke0;eep EiDow 9;c3Np 1;in,oD;ff,v7;gn Eng2Zt Dz8;d2o5up;in,o5up;aFoDu4F;ot Dut0w 5X;aw3ba4f37o5R;c2FdeAk4Sve6;e Hll0nd GtD; Dtl43;d2in,o5upD;!on;aw3ba4d2in,o1Yup;o5to;al4Lout0rap4L;il6v8;at0eKiJoGuD;b 4Ele0n Dstl8;aDba4d2in53o3Gt30u3E;c1Xw3;ot EuD;g2Knd6;a1Xf2Ro5;ng 4Op6;aDel6inAnt0;c4Yd D;o2Tu0C;aQePiOlMoKrHsyc2AuD;ll Ft D;aDba4d2in,o1Ht34up;p39w3;ap38d2in,o5t32up;attleCess EiGoD;p 1;ah1Hon;iDp 53re3Mur45wer 53;nt0;ay3ZuD;gAmp 9;ck 53g0leCn 9p3W;el 47ncilA;c3Pir 2In0ss FtEy D;ba4o4R; d2c1Y;aw3ba4o12;pDw3K;e3Jt B;arrow3Terd0oD;d6te3S;aJeHiGoEuD;ddl8ll37;c17p 1uth6ve D;al3Bd2in,o5up;ss0x 1;asur8lt 9ss D;a1Aup;ke Dn 9r30s1Lx0;do,o3Yup;aPeNiIoDuck0;a17c37g GoDse0;k Dse35;aft7ba4d2forw2Bin3Wov7uD;nd7p;in,o0J;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fl22r Dt 1;fDof;rom;in,oRu1A;cZm 1nDve it,ze1Y;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:73;1:7I;2:7O;3:7H;4:7A;5:5B;6:4R;7:49;8:48;9:7F;A:60;a6Eb60c5Md52e4Pf45g3Xh3Mi31j2Zk2Yl2Nm2Cn23o1Np16quack,r0Ws0Ct05uMvJwByear5;arp0eFholeEiDoB;man5oBu67;d69zy;despr6Zs5B;!sa7;eClBste22;co1El o4H;!k5;aCiBola47;b7Nce versa,ol50;ca2gabo5Ynilla;ltSnFpCrb55su4tterB;!mo6U; f30b1KpCsBti1D;ca7et,ide dItairs;er,i3J;aLbeco6Lconvin23deIeHfair,ivers4knGprecedUrEsCwB;iel1Writt5U;i1RuB;pervis0specti3;eBu5;cognHgul6Bl6B;own;ndi3v5Oxpect0;cid0rB;!grou5JsB;iz0tood;b7ppeaHssu6AuthorB;iz0;i20ra;aFeDhough4KoCrB;i1oubl0;geth6p,rp6B;en5LlBm4Vrr2Q;li3;boo,lBn;ent0;aTcSeQhPiNmug,nobbi3AoLpKqueami3AtFuBymb5Y;bDi gener50pBrprisi3;erBre0H;! dup6b,i25;du0seq4P;anda6OeEi0LrBy34;aightBip0; fBfB;or56;adfa5Wreotyp0;a4Uec2Cir1Flend5Wot on; call0le,mb6phist1TrBu0Tvi3X;d5Ury;gnifica2nB;ce4Qg7;am2Le6ocki3ut;cBda1em5lfi2Uni1Spa63re8;o1Cr3R;at53ient24reec53;cr0me,ns serif;aIeEiCoB;bu5Ktt4PuOy4;ghtBv4;!-25fA;ar,bel,condi1du5Xfres4XlDpublic3RsBtard0;is43oB;lu1na2;e1Auc41;b5EciB;al,st;aMeKicayu8lac5Copuli5BrCuB;bl54mp0;eFiCoB;!b06fu5Cmi2Xp6;mCor,sBva1;ti8;a4Re;ci58mB;a0EiB;er,um;ac1WrBti1;fe9ma2Pplexi3v2Z;rBst;allelDtB;-tiBi4;me;!ed;bMffKkJld fashion0nIpHrg1Dth6utGvB;al,erB;!aDniCt,wB;eiBrouB;ght;ll;do0Rer,g2Hsi41;en,posi1; boa5Ag2Fli8;!ay; gua58bBli8;eat;eDsB;cBer0Dole1;e8u3F;d2Ose;ak0eIiHoBua4J;nFrCtB;ab7;thB;!eB;rn;chala2descri4Ustop;ght5;arby,cessa3Sighbor5xt;aJeHiEoBultip7;bi7derClBnth5ot,st;dy;a1n;nBx0;iaBor;tu2Y;di49naBre;ci3;cBgenta,in,jZkeshift,le,mmoth,ny,sculi8;ab2Uho;aKeFiCoBu0Z;uti0Yvi3;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda38;!-08;ngu3Lst,tt6;ap1Oind5no06;agg0uB;niKstifi0veni7;de4gno46lleg4mOnDpso 1RrB;a1releB;va2; JaIbr0corHdFfluenPiPnEsDtB;a9en3GoxB;ic31;a8i2N;a1er,oce2;iCoB;or;re9;deq3Eppr2T;fBsitu,vitro;ro2;mFpB;arDerfe9oBrop6;li1rtB;a2ed;ti4;eBi0M;d2Ln30;aGelFiDoBumdr36;ne2Uok0rrBs03ur5;if2N;ghfalut1KspB;an2L;liVpfA;lEnDrB;d01roB;wi3;dy,gi3;f,low0;ainfAener2Eiga1YlHoGraDuB;ilBng ho;ty;cCtB;efAis;efA;ne,od;ea28ob4;aQeKinJlIoDrB;a1PeBoz1G;e28q0YtfA;oDrB; keeps,eBm6tuna1;g00ign;liB;sh;ag2Uue2;al,i1;dFmCrB;ti7;a7ini8;ne;le; up;bl0i2l20r Cux,voB;ri1uri1;oBreac1A;ff;aJfficie2lImiHnFre9there4veExB;a9cess,pe1JtraCuB;be2Gl0D;!va19;n,ryday; Bcouragi3ti0M;rou1sui1;ne2;abo1YdMe14i1;g6sB;t,ygB;oi3;er;aReJiDoBrea11ue;mina2ne,ubB;le,tfA;dact16fficu1JsCvB;er1F;creDeas0gruntl0hone1AordCtB;a2ress0;er5;et; HadpGfFgene1KliDrang0spe1KtCvoB;ut;ail0ermin0;be1Hca1ghB;tfA;ia2;an;facto;i5magBngeroVs0E;ed,i3;ly;ertaNhief,ivil,oDrB;aBowd0u0D;mp0vYz0;loJmHnCoi3rrBve0K;e9u1D;cre1grEsDtB;emBra0B;po09;ta2;ue2;mer04pleB;te,x;ni4ss4;in;aLeHizarGlFoCrB;and new,isk,okL;gCna fiSttom,urgeoB;is;us;ank,iE;re;autifAhiClov0nBst,yoC;eRt;nd;ul;ckCnkru0SrrB;en;!wards; priori,b0Ic0Fd05fra04g00hZlUma01ntiquTppQrKsIttracti02utheHvEwB;aCkB;wa0P;ke,re;ant garCerB;age;de;ntQ;leep,tonisB;hi3;ab,bitEroDtiB;fiB;ci4;ga2;raB;ry;are2etiLrB;oprB;ia1;at0;arEcohCeBiIl,oof;rt;olB;ic;mi3;ead;ainDgressiConiB;zi3;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda2;e2oCtra9;ct;lu1rbi3;ng;te;pt;aBve;rd;aze,e;ra2;nt", - "Comparable": "true¦0:3Z;1:4G;2:43;3:49;4:3V;5:2W;a4Mb42c3Md3Be33f2Pg2Dh22i1Tj1Sk1Pl1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell25ou3;aBe9hi1Wi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Kt;k,ry;n1Rr6sI;m,y;a7e6ulgar;nge4rda2xi3;gue,in,st;g0n6pco3Kse4;like0ti1;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "Adjective": "true¦0:7N;1:82;2:81;3:88;4:7U;5:5R;6:57;7:4N;8:4M;9:7Z;A:6G;B:7L;a6Vb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uNvKwCyear5;arp0eGholeFiEoC;man5oCu6O;d6Qzy;despr7Ks5S;!sa7;eDlCste2A;co1Nl o4W;!k5;aDiCola4M;b88ce versa,ol5H;ca3gabo6Fnilla;ltUnHpDrb5Msu4tterC;!mo7F; f3Ab1SpEsCti1M;ca7etCide dKtairs;!ti2;er,i3U;aMbeco75convin2AdeJeIfair,ivers4knHprecedWrFsDwC;iel3Oritt6A;i1YuC;pervis0spec3Z;eCu5;cognIgul6Tl6T;own;ndi2v64xpect0;cid0rC;!grou5ZsC;iz0tood;b7pp0Essu6UuthorC;iz0;i27ra;aHeFhEi6AoDrC;i1oubl0us3N;geth6p,rp6Vuc67;ough4Xril34;en60l33mpCrr2Y;o6Ati2;boo,lCn;ent0;aXcWeUhTiRmug,nobbi3MoPpOqueami3MtGuCymb6H;bEi gener5EpCrpri6D;erCre0O;! dup6b,i2D;du0seq53;anda77eHiGrCunni2y3G;aightDiC;ki2p0; fCfC;or5K;ll,r5S;aCreotyp0;dfa6Cmi2;a56ec2Hir1Ilend6Cot on; call0le,mb6phist1YrCu0Wvi49;d6Ary;gnifica3nC;ce52g7;am2Se6ocki2ut;cCda1em5lfi33ni1Xpa6Jre8;o1Fr43;at5Gient29reec5G;cr0me;aKeFiDoC;bu60tt51uRy4;ghtCv4;!-2CfA;ar,bel,condi1du6Dfres5AlFpublic43sDtard0vC;ea27;is4DoC;lu1na3;aRe1Duc4B;b5TciCllyi2;al,st;aPeMicayu8lac5Ropuli5QrDuC;bl5Jmp0n51;eHiEoC;!b08fuBmiCp6;ne3si2;mDor,sCva1;ti8;a53e;ciBmC;a0FiC;er,um;ac21rCti1;fe9ma2YpleCv39;xi2;rCst;allelEtC;-tiCi4;me;!ed;bMffKkJld fashion0nIpHrg1Fth6utGvC;al,erC;!all,niDt,wC;eiCrouC;ght;do0Uer,g2Rsi4B;en,posi1; boa5Og2Pli8;!ay; gua5MbCli8;eat;eEsC;cCer0Fole1;e8u3P;d2Yse;aKeJiIoCua4X;nGrDtC;ab7;thC;!eC;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1B;aJeHiEoCultip7;bi7derCl0Wnth5ot,st;a1n;nCx0;dblo0SiaCor;tu38;ande3Qdi4NnaCre;ci2;cCgenta,in,j02keshift,le,mmoth,ny,sculi8;ab34ho;aLeGiDoCu16;uti15vi2;mDteraC;l,te;it0;ftFgCth4;al,eDitiC;ma1;nda3K;!-0D;ngu3Zst,tt6;ap1Yind5no0B;agg0uC;niNstifi0veni7;de4gno4Klleg4mRnFpso 21rC;a1rC;eleCita0K;va3; LaKbr0corJdHfluenRiRnGsFtDviC;go0Gti2;a9enBoxC;ic3B;a8i2Vul0E;a1er,oce3;iDoC;or;re9;deq3Qppr33;fCsitu,vitro;ro3;mGpC;arEerfe9oCrop6;li1rtC;a3ed;ti4;eCi0T;d2VnB;aJeGiEoCumdr3I;ne36ok0rrCs09ur5;if2Z;ghfalut1RspC;an2X;aDlC;liZpfA;li2;lFnErC;d05roC;wi2;dy;f,low0;ainfAener2Oiga24lIoHraEuC;ilCng ho;ty;cDtC;efAis;efA;ne,od;ea2Iob4;aUeOinNlLoGrC;a1VeEoz1MustC;raC;ti2;e2Gq11tfA;oErC; keeps,eCm6tuna1;g04ign;liC;sh;aCue3;g31tte1P;al,i1;dGmDrC;ti7;a7ini8;ne;le; up;bl0i3lBr Dux,voC;ri1uri1;oCreac1E;ff;aMfficie3lLmInGre9there4veFxC;a9cess,pe1QtraDuC;be2Nl0F;!va1E;n,ryday; CcouraFti0P;rou1sui1;erDiC;ne3;gi2;abo23dNe17i1;g6sC;t,ygC;oi2;er;aSeKiEoCrea14ue;mina3ne,ubC;le,tfA;dact1Bfficu1OsDvC;erB;creEeas0gruntl0hone1FordDtC;a3ressN;er5;et; IadpHfGgene1PliErang0spe1PtDvoC;ut;ail0ermin0;be1Mca1ghC;tfA;ia3;an;facto;i5magCngeroVs0G;ed,i2;ly;ertaNhief,ivil,oErC;aCowd0u0G;mp0vZz0;loJmHnDrrCve0P;e9u1I;cre1fu0LgrEsDtC;empo0Dra0E;ta3;ue3;mer08pleC;te,x;ni4ss4;in;aNeJizarIlGoDrC;and new,isk,okN;gDna fiUttom,urgeoC;is;us;ank,indC;!i2;re;autifAhiDlov0nCst,yoD;eUt;nd;ul;ckDnkru0XrrC;en;!wards; priori,b0Nc0Kd0Afra09g05h04lZmXntiquWppTrNsJttracti07utheIvFwC;aDkC;wa0U;ke,re;ant garDerC;age;de;ntV;leep,piEsuEtonC;isC;hi2;ri2;ab,bitFroEtiC;fiC;ci4;ga3;raC;ry;are3etiOrC;oprC;ia1;at0;aKuC;si2;arFcohDeCiJl,oof;rt;olC;ic;mi2;ead;ainEgressiDoniC;zi2;ve;st;id; JeHuGvC;aDerB;se;nc0;ed;lt;pt,qC;ua1;hoc,infinitC;um;cuDtu4u1;al;ra1;erMlLoJruIsDuC;nda3;e3oDtra9;ct;lu1rbi2;ng;te;pt;aCve;rd;aze,e;ra3;nt", + "Comparable": "true¦0:41;1:4I;2:45;3:4B;4:3X;5:2Y;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou3;aBe9hi1Yi7r6;o3y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge4rda2xi3;g9in,st;g0n6pco3Mse4;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te4;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft5;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp5;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p5;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in4le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b5isy,rm15sy;ce,mb5;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt5ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b5id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te4;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t5uiY;u1y;aIeeb5iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get4mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e4i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", "TextValue": "true¦bOeJfDhundredNmOninAone,qu8s6t0zeroN;enMh3rNw0;e0o;l0ntD;fHve;ir0ousandKree;d,t6;e0ix8;cond,pt1ven7xt1;adr0int0;illionD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en0;!th;illion0;!s,th", "Ordinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", - "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", + "Adverb": "true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", "Preposition": "true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er" } \ No newline at end of file diff --git a/src/World/data/plurals.js b/src/World/data/plurals.js index 4424bbb5d..53a8b2480 100644 --- a/src/World/data/plurals.js +++ b/src/World/data/plurals.js @@ -47,7 +47,7 @@ module.exports = { modulus: 'moduli', mosquito: 'mosquitoes', mouse: 'mice', - move: 'moves', + // move: 'moves', nebula: 'nebulae', nucleus: 'nuclei', octopus: 'octopi', diff --git a/src/_version.js b/src/_version.js index cf1ccfd5f..ab374bfdf 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '13.5.0' \ No newline at end of file +module.exports = '13.6.0' \ No newline at end of file diff --git a/tests/misc.test.js b/tests/misc.test.js index 59b3870d1..114dee8d4 100644 --- a/tests/misc.test.js +++ b/tests/misc.test.js @@ -44,3 +44,10 @@ test('replacement with a contraction', function (t) { t.end() }) + +test('Doc.fromText', function (t) { + let doc = nlp('original') + let b = doc.fromText('a bee see') + t.equal(b.text(), 'a bee see', 'fromText') + t.end() +}) diff --git a/tests/nouns/nounPhrase.test.js b/tests/nouns/nounPhrase.test.js index af157ee30..02d36c29e 100644 --- a/tests/nouns/nounPhrase.test.js +++ b/tests/nouns/nounPhrase.test.js @@ -12,7 +12,7 @@ const nlp = require('../_lib') // NNN: class probability function; text analysis system; gradient elution chromatography // NPN: degrees of freedom; [no example]; energy of adsorption -test('noun-phrases', function(t) { +test('noun-phrases', function (t) { ;[ ['he was a person of interest in the case', 'person of interest'], ['he was the mayor of chicago', 'mayor of chicago'], @@ -33,10 +33,9 @@ test('noun-phrases', function(t) { ['a typical machine learning documentary film', 'machine learning documentary film'], ['every cold war re-enactment is boring', 'cold war reenactment'], ['two slices of cranberry', 'slices of cranberry'], - ].forEach(function(a) { - const str = nlp(a[0]) - .nouns(0) - .out('normal') + [`Japan 'Twitter killer' pleads guilty to murders`, 'japan'], + ].forEach(function (a) { + const str = nlp(a[0]).nouns(0).out('normal') t.equal(str, a[1], a[0] + ' -> "' + str + '"') }) t.end() diff --git a/tests/output/json.test.js b/tests/output/json.test.js index 6ee306684..fc6474704 100644 --- a/tests/output/json.test.js +++ b/tests/output/json.test.js @@ -1,14 +1,14 @@ const test = require('tape') const nlp = require('../_lib') -const hasTag = function(term, want) { +const hasTag = function (term, want) { if (!term || !term.tags) { return false } return term.tags.some(tag => tag === want) } -test('json out default', function(t) { +test('json out default', function (t) { let doc = nlp('who are you? what is this?') let json = doc.json({ terms: true }) t.equal(json.length, 2, 'json-len') @@ -18,7 +18,7 @@ test('json out default', function(t) { t.end() }) -test('json out trim', function(t) { +test('json out trim', function (t) { let doc = nlp('who are you? what is this?') let json = doc.json({ trim: false, terms: false }) t.equal(json.length, 2, 'json-len') @@ -28,7 +28,7 @@ test('json out trim', function(t) { t.end() }) -test('json out implicit', function(t) { +test('json out implicit', function (t) { let str = `he isn't` let doc = nlp(str) let json = doc.json() @@ -46,7 +46,7 @@ test('json out implicit', function(t) { t.end() }) -test('json terms out', function(t) { +test('json terms out', function (t) { let doc = nlp(`she is not`) let json = doc.json({ text: false, terms: { clean: true, id: true, bestTag: true, whitespace: true } }) t.equal(json.length, 1, 'json-len') @@ -64,7 +64,7 @@ test('json terms out', function(t) { t.end() }) -test('json-index:', function(t) { +test('json-index:', function (t) { let doc = nlp(`john is not really walking`) let obj = doc.match('really').json({ index: true })[0] t.equal(obj.terms[0].index, 3, 'index:3') @@ -72,14 +72,14 @@ test('json-index:', function(t) { t.end() }) -test('json-unique:', function(t) { +test('json-unique:', function (t) { let doc = nlp(`a b c b a`) let arr = doc.terms().json({ unique: true, terms: false, count: true }) t.equal(arr.length, 3, 'no duplicates') t.end() }) -test('out-custom:', function(t) { +test('out-custom:', function (t) { const doc = nlp('The competent drum work of Don Brewer?') const arr = doc.json({ terms: { @@ -100,3 +100,15 @@ test('out-custom:', function(t) { ) t.end() }) + +test('out:', function (t) { + let doc = nlp(`john is not really walking`) + let json = doc.out('json') + t.equal(json.length, 1, 'one-json') + json = doc.out('offset') + t.equal(json.length, 1, 'offset-out') + + let terms = doc.out('terms') + t.equal(terms[0], 'john', 'terms-out') + t.end() +}) diff --git a/tests/people.test.js b/tests/people.test.js index 0f6e77dfe..5a0a2dde1 100644 --- a/tests/people.test.js +++ b/tests/people.test.js @@ -1,47 +1,29 @@ const test = require('tape') const nlp = require('./_lib') -test('people:', function(t) { +test('people:', function (t) { let doc = nlp('Mary is in the boat. Nancy is in the boat. Fred is in the boat. Jack is too.') - let arr = doc - .people() - .toLowerCase() - .out('array') + let arr = doc.people().toLowerCase().out('array') t.deepEqual(arr, ['mary', 'nancy', 'fred', 'jack'], 'people-easy') doc = nlp('jean jacket. jean Slkje') - arr = doc - .people() - .toLowerCase() - .out('array') + arr = doc.people().toLowerCase().out('array') t.deepEqual(arr, ['jean slkje'], 'people-context') doc = nlp('The Bill was passed by James MacCarthur') - arr = doc - .people() - .toLowerCase() - .out('array') + arr = doc.people().toLowerCase().out('array') t.deepEqual(arr, ['james maccarthur'], 'the-bill') doc = nlp('Rod MacDonald bought a Rod') - arr = doc - .people() - .toLowerCase() - .out('array') + arr = doc.people().toLowerCase().out('array') t.deepEqual(arr, ['rod macdonald'], 'the-rod-1') doc = nlp('Rod L. MacDonald bought a lightening rod') - arr = doc - .people() - .toLowerCase() - .out('text') + arr = doc.people().toLowerCase().out('text') t.deepEqual(arr, 'rod l. macdonald', 'the-rod-2') doc = nlp("Matt 'the doctor' Smith lasted three seasons.") - arr = doc - .people() - .toLowerCase() - .out() + arr = doc.people().toLowerCase().out() t.deepEqual(arr, "matt 'the doctor' smith", 'nickname-1') doc = nlp("Randal Kieth Orton and Dwayne 'the rock' Johnson had a really funny fight.") @@ -55,3 +37,52 @@ test('people:', function(t) { t.end() }) + +test('people false-positives:', function (t) { + let arr = [ + `op assessment`, + `may`, + `liberty`, + `Service.`, + `CATS Clinic`, + `CATS Team.`, + `Mount Vernon`, + `CCP`, + `GI Team`, + `Breast`, + `lady's shoulder.`, + `secretary's contact`, + `Limb CATS Clinic`, + `b.d. In`, + `Spinal `, //hmm + `booked her for TURBT +/-Mitomycin C.`, //hmm + `lady's`, + `MRI Brain`, + `P.S. Dear`, + `(AP`, + // `Barrett's disease`, + // `TIA`, + // `Sam myself`, + `she may need to be`, + `she may have to wait`, + `we may need to cancel`, + `We may need to revisit the diagnosis`, + `which I think may be arising`, + // `Mr Sean Malay, Spinal Surgeon`, + `onto the Spinal CATS Service`, + // `Vitamin D.`, + // `may`, + // `ACE`, + // `gene`, + // `Jennifer antibiotics`, + // `rheumatoid factor, ANA, ENA, CCP antibody, ESR, CRP, etc.`, + // `in our X-ray Uro-radiology`, + ] + arr.forEach(str => { + let doc = nlp(str) + let people = doc.people().out('array') + t.deepEqual(people, [], str) + }) + + t.end() +}) diff --git a/tests/sort.test.js b/tests/sort.test.js index ba7e32286..3129aff1d 100644 --- a/tests/sort.test.js +++ b/tests/sort.test.js @@ -1,7 +1,7 @@ const test = require('tape') const nlp = require('./_lib') -test('sortAlpha:', function(t) { +test('sortAlpha:', function (t) { const str = 'John xoo, John fredman, John davis, John fredman,' let r = nlp(str) r = r.split('@hasComma') @@ -11,7 +11,7 @@ test('sortAlpha:', function(t) { t.end() }) -test('sortSequential:', function(t) { +test('sortSequential:', function (t) { const str = 'John xoo, John fredman, John davis' let r = nlp(str) r = r.split('@hasComma') @@ -22,7 +22,7 @@ test('sortSequential:', function(t) { t.end() }) -test('reverse:', function(t) { +test('reverse:', function (t) { const str = 'John xoo, John fredman, John davis' let r = nlp(str) r = r.split('@hasComma') @@ -33,7 +33,17 @@ test('reverse:', function(t) { t.end() }) -test('length:', function(t) { +test('freq:', function (t) { + const str = 'John xoo, John fredman, John davis' + let r = nlp(str) + r = r.terms() + r = r.sort('freq') + const want = ['John', 'John', 'John', 'xoo,', 'fredman,', 'davis'] + t.deepEqual(r.out('array'), want, 'freq-reverse') + t.end() +}) + +test('length:', function (t) { const str = 'Amy, John Fredman, Dr. Bill, Alexis Smithsonian' let r = nlp(str) r = r.split('@hasComma') @@ -44,7 +54,7 @@ test('length:', function(t) { t.end() }) -test('wordCount:', function(t) { +test('wordCount:', function (t) { const str = 'John Fredman, Amy, Dr. Bill G. Gates' let r = nlp(str) r = r.split('@hasComma') @@ -55,7 +65,7 @@ test('wordCount:', function(t) { t.end() }) -test('unique:', function(t) { +test('unique:', function (t) { const str = 'John xoo, John fredman, john xoo, John davis' let r = nlp(str) r = r.split('@hasComma') @@ -65,7 +75,7 @@ test('unique:', function(t) { t.end() }) -test('custom-sort:', function(t) { +test('custom-sort:', function (t) { let doc = nlp('Eeny, meeny, miny, moe') let terms = doc.terms() terms.sort((a, b) => { @@ -84,7 +94,7 @@ test('custom-sort:', function(t) { t.end() }) -test('frequency:', function(t) { +test('frequency:', function (t) { const str = 'John xoo, John fredman, john xoo, John davis' let r = nlp(str) r = r.split('@hasComma') diff --git a/tests/tagger/tagger.test.js b/tests/tagger/tagger.test.js index bcef50a3b..8f9de7315 100644 --- a/tests/tagger/tagger.test.js +++ b/tests/tagger/tagger.test.js @@ -1,7 +1,7 @@ const test = require('tape') const nlp = require('../_lib') -test('pos-basic-tag:', function(t) { +test('pos-basic-tag:', function (t) { let arr = [ ['John is pretty', ['Person', 'Copula', 'Adjective']], ['John was lofty', ['Person', 'Copula', 'Adjective']], @@ -141,6 +141,10 @@ test('pos-basic-tag:', function(t) { // numberrange ['it was 1-2 kg woooh', ['Noun', 'PastTense', 'NumberRange', 'NumberRange', 'NumberRange', 'Unit', 'Expression']], + ['1-1', ['NumberRange', 'NumberRange', 'NumberRange']], + ['12-12', ['NumberRange', 'NumberRange', 'NumberRange']], + ['123-123', ['NumberRange', 'NumberRange', 'NumberRange']], + ['1234-1234', ['Noun']], ['bakes', ['PresentTense']], ['fakes', ['PresentTense']], @@ -182,21 +186,44 @@ test('pos-basic-tag:', function(t) { 'col. Patrick said march and feb. etc.', ['Abbreviation', 'Person', 'PastTense', 'Month', 'Conjunction', 'Abbreviation', 'Abbreviation'], ], - //dates + [`i met April O'neil`, ['Pronoun', 'PastTense', 'Person', 'Person']], + // adjectives ['germans are nice', ['Demonym', 'Verb', 'Adjective']], ['Iraqis are nice', ['Plural', 'Copula', 'Adjective']], ['canadians are nice', ['ProperNoun', 'Verb', 'Adjective']], ['thom is smart', ['ProperNoun', 'Verb', 'Adjective']], - [`i met April O'neil`, ['Pronoun', 'PastTense', 'Person', 'Person']], + // [`ANA, ENA, CCP etc.`, ['Acronym', 'Acronym', 'Acronym', 'Abbreviation']], + [`as disgusting as`, ['Preposition', 'Adjective', 'Preposition']], + [`more disgusting than`, ['Adverb', 'Adjective', 'Preposition']], + [`was so nausiating`, ['Copula', 'Adverb', 'Adjective']], + [`extremely moving`, ['Adverb', 'Adjective']], + [`each promising image`, ['Determiner', 'Adjective', 'Singular']], + [`this reckoning`, ['Determiner', 'Noun']], + [`it was redefining`, ['Pronoun', 'Copula', 'Adjective']], + [`it was a redefining moment`, ['Pronoun', 'Copula', 'Determiner', 'Adjective', 'Noun']], + [`he is redefining art`, ['Pronoun', 'Copula', 'Verb', 'Noun']], + [`revealing his guts`, ['Gerund', 'Possessive', 'Plural']], + // [`the ruling party`, ['Determiner', 'Adjective', 'Singular']], + [`i found it isolating`, ['Noun', 'PastTense', 'Noun', 'Adjective']], + // [`promising to leave`, ['Gerund', 'Conjunction', 'Verb']], + [`distressing us`, ['Gerund', 'Noun']], + [`loving you`, ['Gerund', 'Noun']], + [`it was disgusting`, ['Pronoun', 'Copula', 'Adjective']], + [`dark green`, ['Adverb', 'Adjective']], + [`kinda sparkly`, ['Adverb', 'Adjective']], + [`quite stunning`, ['Adverb', 'Adjective']], + [`slowly stunning`, ['Adverb', 'Verb']], + [`quite awfully stunning`, ['Adverb', 'Adverb', 'Adjective']], + [`quite awfully swimming`, ['Adverb', 'Adverb', 'Verb']], ] - arr.forEach(function(a) { + arr.forEach(function (a) { let terms = nlp(a[0]).json(0).terms terms.forEach((term, i) => { let tag = a[1][i] let found = term.tags.some(tg => tg === tag) - t.equal(found, true, a[0] + ' - ' + term.text + ' ' + tag) + t.equal(found, true, a[0] + " - '" + term.text + ' #' + tag) }) }) t.end() diff --git a/tests/verbs/imperative.test.js b/tests/verbs/imperative.test.js new file mode 100644 index 000000000..3da3c37e1 --- /dev/null +++ b/tests/verbs/imperative.test.js @@ -0,0 +1,21 @@ +const test = require('tape') +const nlp = require('../_lib') + +test('imperative keeps tense:', function (t) { + let arr = [ + 'do speak', + 'do not walk', + 'please do not speak', + // 'go!', + // "don't go", + // 'shut the door', + // 'eat your vegetables', + // 'you should eat your vegetables', + ] + arr.forEach(function (str) { + const doc = nlp(str) + doc.verbs().toPastTense() + t.equal(doc.text(), str, str + ' [toPast]') + }) + t.end() +}) diff --git a/tests/verbs/misc.test.js b/tests/verbs/misc.test.js index ee23bff65..d9c5821ef 100644 --- a/tests/verbs/misc.test.js +++ b/tests/verbs/misc.test.js @@ -38,6 +38,29 @@ test('dont conjugate modals', function (t) { t.end() }) +test('support punctuation', function (t) { + let doc = nlp('i go!') + doc.verbs().toPastTense() + t.equal(doc.text(), 'i went!', 'excl-mark') + + doc = nlp('i go?!') + doc.verbs().toPastTense() + t.equal(doc.text(), 'i went?!', 'ques-excl-mark') + + doc = nlp('i go; he went.') + doc.verbs().toPastTense() + t.equal(doc.text(), 'i went; he went.', 'semi-colon') + t.end() +}) + +test('was shocked looking at', function (t) { + let doc = nlp('i was shocked looking at the race') + let verbs = doc.verbs() + t.equal(verbs.length, 2, 'split into two') + t.equal(verbs.eq(0).text(), 'was shocked', 'first verb') + t.equal(verbs.eq(1).text(), 'looking', 'first verb') + t.end() +}) // test('detect participle in past-tense', function (t) { // let doc = nlp('everybody ought to swim.') // doc.verbs().toPastTense() diff --git a/tests/verbs/participle.test.js b/tests/verbs/participle.test.js new file mode 100644 index 000000000..86f98d5a8 --- /dev/null +++ b/tests/verbs/participle.test.js @@ -0,0 +1,55 @@ +const test = require('tape') +const nlp = require('../_lib') + +test('toParticiple', function (t) { + let arr = [ + ['i drive', 'i have driven'], + ['we smoke', 'we have smoked'], + // ['i will go', 'i will have gone'], //still future-tense? + ['they all swim', 'they all have swam'], + ['i learn', 'i have learned'], + ['i really travel to india', 'i really have traveled to india'], + ] + arr.forEach(a => { + let doc = nlp(a[0]) + doc.verbs().toParticiple() + t.equal(doc.text(), a[1], a[0]) + }) + t.end() +}) + +test('participle -> past', function (t) { + let arr = [ + ['i am being driven', 'i have been driven'], + ['i should be driven', 'i should have been driven'], + ['i should go', 'i should have gone'], + ['i should have been driven', 'i should have been driven'], + ['i have driven', 'i drove'], + ['we have smoked', 'we smoked'], + ['i will have gone', 'i had gone'], + ] + arr.forEach(a => { + let doc = nlp(a[0]) + doc.verbs().toPastTense() + t.equal(doc.text(), a[1], a[0]) + }) + t.end() +}) + +test('participle -> future', function (t) { + let arr = [ + // ['i am being driven', 'i will have been driven'], + // ['i should be driven', 'i should have been driven'], + // ['i should go', 'i should have gone'], + // ['i should have been driven', 'i should have been driven'], + ['i have driven', 'i will drive'], + ['we have smoked', 'we will smoke'], + ['i will have gone', 'i will have gone'], + ] + arr.forEach(a => { + let doc = nlp(a[0]) + doc.verbs().toFutureTense() + t.equal(doc.text(), a[1], a[0]) + }) + t.end() +}) diff --git a/tests/verbs/subject.test.js b/tests/verbs/subject.test.js new file mode 100644 index 000000000..81a0afced --- /dev/null +++ b/tests/verbs/subject.test.js @@ -0,0 +1,59 @@ +const test = require('tape') +const nlp = require('../_lib') + +test('verb.subject():', function (t) { + let arr = [ + ['i walked', 'i'], + ['john was cool', 'john'], + ['john really was cool', 'john'], + ['john was really cool', 'john'], + ['john did not really drive', 'john'], + ['john would not have really driven', 'john'], + ['speak!', ''], + ['please go to the mall', ''], + ['shut the door', ''], + ['i shall go there', 'i'], + ['he walks carefully and eats a grape', 'he'], + ['if so, john should pay for it', 'john'], + ['you really think so?', 'you'], + ['the moon is made of cheese', 'moon'], + [`listen to the wind blow, watch the sun rise.`, ''], + [`run in the shadows, damn your love, damn your lies. `, ''], + [`listen to the wind blow down comes the night. `, ''], + [`running in the shadows damn your love, damn your lies. `, ''], + [`break the silence, damn the dark, damn the light.`, ''], + [`some should decrease.`, ''], + [`join the community of conscience.`, ''], + [`why is everything different?`, ''], + [`bye!`, ''], + [`oh dear god!`, ''], + [`is there something wrong?`, ''], + [`why is ross naked?`, ''], + [`yeah the big homey`, ''], + [`the type of female wit fly gucci gear`, ''], + [`compared to the heart of a man`, ''], + [`give me a red rose, she cried`, ''], + [`drinking orange juice out of a champagne glass.`, ''], + // + [`it moves power and decision making closer to the people.`, 'it'], + [`that is completely untrue.`, 'that'], + [`i better hit the shower.`, 'i'], + [`morning's here!`, 'morning'], + ] + arr.forEach(function (a) { + const str = nlp(a[0]).verbs(0).subject().text('reduced') + t.equal(str, a[1], a[0] + ' -> ' + str) + }) + t.end() +}) + +// let clauses = [ +// `once established, federal programs seem to become immortal.`, +// `working with congress and the governors, i propose we select at least $15 billion`, +// `that's why i'm submitting a budget `, +// `what is at stake is more than one small country, it is a big idea`, +// `i mean its amazing pheebs.`, +// `believe me, i lived with her for 16 years.`, +// `in 2003 alone, according to state government data, there were over 6.4 million visitors`, +// `but wait i hear they're prissy, bourgeois, all that`, +// ] diff --git a/tests/verbs/toNegative.test.js b/tests/verbs/toNegative.test.js index a0c6a76c6..a05c781de 100644 --- a/tests/verbs/toNegative.test.js +++ b/tests/verbs/toNegative.test.js @@ -1,7 +1,7 @@ const test = require('tape') const nlp = require('../_lib') -test('negative-verb-phrase:', function(t) { +test('negative-verb-phrase:', function (t) { let arr = [ [`he is nice`, 'is not'], [`she was nice`, 'was not'], @@ -37,17 +37,15 @@ test('negative-verb-phrase:', function(t) { // futureTense - ['we will play', 'will not play'], ] - arr.forEach(function(a) { - const vb = nlp(a[0]) - .verbs() - .toNegative() + arr.forEach(function (a) { + const vb = nlp(a[0]).verbs().toNegative() const str = vb.out('text') t.equal(str, a[1], "'" + str + "' - - want: " + a[1]) }) t.end() }) -test('inline verb negate:', function(t) { +test('inline verb negate:', function (t) { let arr = [ ['is', 'is not'], ['will', 'will not'], @@ -83,7 +81,7 @@ test('inline verb negate:', function(t) { [`could study`, `could not study`], [`should study`, `should not study`], ] - arr.forEach(function(a) { + arr.forEach(function (a) { let doc = nlp(a[0]) doc.verbs().toNegative() let str = doc.text('normal') diff --git a/tests/verbs/toParticiple.test.js b/tests/verbs/toParticiple.test.js deleted file mode 100644 index 64bee99b9..000000000 --- a/tests/verbs/toParticiple.test.js +++ /dev/null @@ -1,19 +0,0 @@ -const test = require('tape') -const nlp = require('../_lib') - -test('toParticiple', function (t) { - let arr = [ - ['i drive', 'i have driven'], - ['we smoke', 'we have smoked'], - // ['i will go', 'i will have gone'], //still future-tense? - ['they all swim', 'they all have swam'], - ['i learn', 'i have learned'], - ['i really travel to india', 'i really have traveled to india'], - ] - arr.forEach(a => { - let doc = nlp(a[0]) - doc.verbs().toParticiple() - t.equal(doc.text(), a[1], a[0]) - }) - t.end() -}) diff --git a/tests/verbs/toPast.test.js b/tests/verbs/toPast.test.js index de54778f5..dff0c48d9 100644 --- a/tests/verbs/toPast.test.js +++ b/tests/verbs/toPast.test.js @@ -37,6 +37,10 @@ test('sneaky past participles', function (t) { // past->past ['i had been driven', 'i had been driven'], ['i should have been driven', 'i should have been driven'], + // gerund + ['when it is raining', 'when it was raining'], + ['i think it will be raining', 'i thought it will be raining'], + ['when it was raining', 'when it was raining'], ] arr.forEach(function (a) { let doc = nlp(a[0]) diff --git a/types/index.d.ts b/types/index.d.ts index 73e8d4f5c..4f677599e 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -385,7 +385,7 @@ declare module nlp { /** return things like `'eats, shoots, and leaves'` */ lists(n?: number): Lists /** return any subsequent terms tagged as a Noun */ - nouns(n?: number): Nouns + nouns(n?: number, opts?: object): Nouns /** return any subsequent terms tagged as a Verb */ verbs(n?: number): Verbs }