From 5be6286998f43e7fde1471c03f3b8c5727760e7a Mon Sep 17 00:00:00 2001 From: Jenkins Date: Tue, 29 Nov 2022 10:15:12 +0100 Subject: [PATCH] release patch version:12.0.1 --- bower.json | 2 +- dist/opengate-api-bower-12.0.0.min.js | 41 - dist/opengate-api-bower-12.0.0.min.js.map | 1 - ...12.0.0.js => opengate-api-bower-12.0.1.js} | 86679 ++++++++-------- ...s.map => opengate-api-bower-12.0.1.js.map} | 2 +- dist/opengate-api-bower-12.0.1.min.js | 40 + dist/opengate-api-bower-12.0.1.min.js.map | 1 + docs/ast/source/pipelines/Pipelines.js.json | 3617 +- .../source/transformers/Transformers.js.json | 5955 +- .../Transformers.js~Transformers.html | 2 +- docs/coverage.json | 2 +- docs/dump.json | 12 +- docs/file/src/pipelines/Pipelines.js.html | 5 +- .../src/transformers/Transformers.js.html | 7 +- docs/package.json | 2 +- docs/source.html | 452 +- package-lock.json | 2 +- package.json | 2 +- 18 files changed, 46874 insertions(+), 49950 deletions(-) delete mode 100755 dist/opengate-api-bower-12.0.0.min.js delete mode 100644 dist/opengate-api-bower-12.0.0.min.js.map rename dist/{opengate-api-bower-12.0.0.js => opengate-api-bower-12.0.1.js} (71%) rename dist/{opengate-api-bower-12.0.0.js.map => opengate-api-bower-12.0.1.js.map} (50%) create mode 100755 dist/opengate-api-bower-12.0.1.min.js create mode 100644 dist/opengate-api-bower-12.0.1.min.js.map diff --git a/bower.json b/bower.json index 866d995a6..f5148864c 100755 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "opengate-js", "description": "", - "version": "12.0.0", + "version": "12.0.1", "authors": [], "license": "ISC", "homepage": "", diff --git a/dist/opengate-api-bower-12.0.0.min.js b/dist/opengate-api-bower-12.0.0.min.js deleted file mode 100755 index dfefa47e7..000000000 --- a/dist/opengate-api-bower-12.0.0.min.js +++ /dev/null @@ -1,41 +0,0 @@ -!function e(t,r,n){function i(a,u){if(!r[a]){if(!t[a]){var s="function"==typeof require&&require;if(!u&&s)return s(a,!0);if(o)return o(a,!0);throw new Error("Cannot find module '"+a+"'")}var c=r[a]={exports:{}};t[a][0].call(c.exports,function(e){var r=t[a][1][e];return i(r||e)},c,c.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a=1&&n<=12&&o>=1&&o<=(2==n&&i(r)?29:d[n])}function a(e,t){var r=e.match(h);if(!r)return!1;var n=r[1],i=r[2],o=r[3],a=r[5];return(n<=23&&i<=59&&o<=59||23==n&&59==i&&60==o)&&(!t||a)}function u(e){var t=e.split(A);return 2==t.length&&o(t[0])&&a(t[1],!0)}function s(e){return O.test(e)&&y.test(e)}function c(e){if(S.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var l=e("./util"),f=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,d=[0,31,28,31,30,31,30,31,31,30,31,30,31],h=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,p=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,y=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,m=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,v=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,_=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,g=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,b=/^(?:\/(?:[^~/]|~0|~1)*)*$/,w=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,E=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;t.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":v,url:_,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:g,"json-pointer":b,"json-pointer-uri-fragment":w,"relative-json-pointer":E},n.full={date:o,time:a,"date-time":u,uri:s,"uri-reference":m,"uri-template":v,url:_,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:g,"json-pointer":b,"json-pointer-uri-fragment":w,"relative-json-pointer":E};var A=/t|\s/i,O=/\/|:/,S=/[^\\]\\Z/},{"./util":12}],7:[function(e,t,r){"use strict";function n(e,t,r,a){function b(){var e=L.validate,t=e.apply(this,arguments);return b.errors=e.errors,t}function w(e,r,i,o){var a=!r||r&&r.schema==e;if(r.schema!=t.schema)return n.call(T,e,r,i,o);var y=!0===e.$async,b=m({isTop:!0,schema:e,isRoot:a,baseId:o,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:p.MissingRef,RULES:G,validate:m,util:h,resolve:d,resolveRef:E,usePattern:D,useDefault:C,useCustomRule:k,opts:F,formats:z,logger:T.logger,self:T});b=f(j,c)+f(B,u)+f(R,s)+f(N,l)+b,F.processCode&&(b=F.processCode(b,e));var w;try{w=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",b)(T,G,z,t,j,R,N,_,v,g),j[0]=w}catch(e){throw T.logger.error("Error compiling schema, function code:",b),e}return w.schema=e,w.errors=null,w.refs=x,w.refVal=j,w.root=a?w:r,y&&(w.$async=!0),!0===F.sourceCode&&(w.source={code:b,patterns:B,defaults:R}),w}function E(e,i,o){i=d.url(e,i);var a,u,s=x[i];if(void 0!==s)return a=j[s],u="refVal["+s+"]",P(a,u);if(!o&&t.refs){var c=t.refs[i];if(void 0!==c)return a=t.refVal[c],u=A(i,a),P(a,u)}u=A(i);var l=d.call(T,w,t,i);if(void 0===l){var f=r&&r[i];f&&(l=d.inlineRef(f,F.inlineRefs)?f:n.call(T,f,t,r,e))}if(void 0!==l)return S(i,l),P(l,u);O(i)}function A(e,t){var r=j.length;return j[r]=t,x[e]=r,"refVal"+r}function O(e){delete x[e]}function S(e,t){var r=x[e];j[r]=t}function P(e,t){return"object"==typeof e||"boolean"==typeof e?{code:t,schema:e,inline:!0}:{code:t,$async:e&&!!e.$async}}function D(e){var t=M[e];return void 0===t&&(t=M[e]=B.length,B[t]=e),"pattern"+t}function C(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return h.toQuotedString(e);case"object":if(null===e)return"null";var t=y(e),r=I[t];return void 0===r&&(r=I[t]=R.length,R[r]=e),"default"+r}}function k(e,t,r,n){if(!1!==T._opts.validateSchema){var i=e.definition.dependencies;if(i&&!i.every(function(e){return Object.prototype.hasOwnProperty.call(r,e)}))throw new Error("parent schema must have all required keywords: "+i.join(","));var o=e.definition.validateSchema;if(o){if(!o(t)){var a="keyword schema is invalid: "+T.errorsText(o.errors);if("log"!=T._opts.validateSchema)throw new Error(a);T.logger.error(a)}}}var u,s=e.definition.compile,c=e.definition.inline,l=e.definition.macro;if(s)u=s.call(T,t,r,n);else if(l)u=l.call(T,t,r,n),!1!==F.validateSchema&&T.validateSchema(u,!0);else if(c)u=c.call(T,n,e.keyword,t,r);else if(!(u=e.definition.validate))return;if(void 0===u)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var f=N.length;return N[f]=u,{code:"customRule"+f,validate:u}}var T=this,F=this._opts,j=[void 0],x={},B=[],M={},R=[],I={},N=[];t=t||{schema:e,refVal:j,refs:x};var U=i.call(this,e,t,a),L=this._compilations[U.index];if(U.compiling)return L.callValidate=b;var z=this._formats,G=this.RULES;try{var q=w(e,t,r,a);L.validate=q;var V=L.callValidate;return V&&(V.schema=q.schema,V.errors=null,V.refs=q.refs,V.refVal=q.refVal,V.root=q.root,V.$async=q.$async,F.sourceCode&&(V.source=q.source)),q}finally{o.call(this,e,t,a)}}function i(e,t,r){var n=a.call(this,e,t,r);return n>=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:e,root:t,baseId:r},{index:n,compiling:!1})}function o(e,t,r){var n=a.call(this,e,t,r);n>=0&&this._compilations.splice(n,1)}function a(e,t,r){for(var n=0;n=55296&&t<=56319&&i=t)throw new Error("Cannot access property/index "+n+" levels up, current level is "+t);return r[t-n]}if(n>t)throw new Error("Cannot access data "+n+" levels up, current level is "+t);if(o="data"+(t-n||""),!i)return o}for(var u=o,c=i.split("/"),l=0;l",g=p?">":"<",n=void 0;if(!h&&"number"!=typeof s&&void 0!==s)throw new Error(t+" must be number");if(!v&&void 0!==m&&"number"!=typeof m&&"boolean"!=typeof m)throw new Error(y+" must be number or boolean");if(v){var b=e.util.getData(m.$data,u,e.dataPathArr),w="exclusive"+a,E="exclType"+a,A="exclIsNumber"+a,O="op"+a,S="' + "+O+" + '";o+=" var schemaExcl"+a+" = "+b+"; ",b="schemaExcl"+a,o+=" var "+w+"; var "+E+" = typeof "+b+"; if ("+E+" != 'boolean' && "+E+" != 'undefined' && "+E+" != 'number') { ";var n=y,P=P||[];P.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(o+=" , message: '"+y+" should be boolean' "),e.opts.verbose&&(o+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var D=o;o=P.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+D+"]); ":o+=" validate.errors = ["+D+"]; return false; ":o+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+=" } else if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+E+" == 'number' ? ( ("+w+" = "+i+" === undefined || "+b+" "+_+"= "+i+") ? "+d+" "+g+"= "+b+" : "+d+" "+g+" "+i+" ) : ( ("+w+" = "+b+" === true) ? "+d+" "+g+"= "+i+" : "+d+" "+g+" "+i+" ) || "+d+" !== "+d+") { var op"+a+" = "+w+" ? '"+_+"' : '"+_+"='; ",void 0===s&&(n=y,l=e.errSchemaPath+"/"+y,i=b,h=v)}else{var A="number"==typeof m,S=_;if(A&&h){var O="'"+S+"'";o+=" if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" ( "+i+" === undefined || "+m+" "+_+"= "+i+" ? "+d+" "+g+"= "+m+" : "+d+" "+g+" "+i+" ) || "+d+" !== "+d+") { "}else{A&&void 0===s?(w=!0,n=y,l=e.errSchemaPath+"/"+y,i=m,g+="="):(A&&(i=Math[p?"min":"max"](m,s)),m===(!A||i)?(w=!0,n=y,l=e.errSchemaPath+"/"+y,g+="="):(w=!1,S+="="));var O="'"+S+"'";o+=" if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+d+" "+g+" "+i+" || "+d+" !== "+d+") { "}}n=n||t;var P=P||[];P.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+O+", limit: "+i+", exclusive: "+w+" } ",!1!==e.opts.messages&&(o+=" , message: 'should be "+S+" ",o+=h?"' + "+i:i+"'"),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+s,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var D=o;return o=P.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+D+"]); ":o+=" validate.errors = ["+D+"]; return false; ":o+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+=" } ",f&&(o+=" else { "),o}},{}],16:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,u=e.dataLevel,s=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(u||""),h=e.opts.$data&&s&&s.$data;if(h?(o+=" var schema"+a+" = "+e.util.getData(s.$data,u,e.dataPathArr)+"; ",i="schema"+a):i=s,!h&&"number"!=typeof s)throw new Error(t+" must be number");var p="maxItems"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" "+d+".length "+p+" "+i+") { ";var n=t,y=y||[];y.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT have ",o+="maxItems"==t?"more":"fewer",o+=" than ",o+=h?"' + "+i+" + '":""+s,o+=" items' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+s,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var m=o;return o=y.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+m+"]); ":o+=" validate.errors = ["+m+"]; return false; ":o+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],17:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,u=e.dataLevel,s=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(u||""),h=e.opts.$data&&s&&s.$data;if(h?(o+=" var schema"+a+" = "+e.util.getData(s.$data,u,e.dataPathArr)+"; ",i="schema"+a):i=s,!h&&"number"!=typeof s)throw new Error(t+" must be number");var p="maxLength"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),!1===e.opts.unicode?o+=" "+d+".length ":o+=" ucs2length("+d+") ",o+=" "+p+" "+i+") { ";var n=t,y=y||[];y.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT be ",o+="maxLength"==t?"longer":"shorter",o+=" than ",o+=h?"' + "+i+" + '":""+s,o+=" characters' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+s,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var m=o;return o=y.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+m+"]); ":o+=" validate.errors = ["+m+"]; return false; ":o+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],18:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,u=e.dataLevel,s=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(u||""),h=e.opts.$data&&s&&s.$data;if(h?(o+=" var schema"+a+" = "+e.util.getData(s.$data,u,e.dataPathArr)+"; ",i="schema"+a):i=s,!h&&"number"!=typeof s)throw new Error(t+" must be number");var p="maxProperties"==t?">":"<";o+="if ( ",h&&(o+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),o+=" Object.keys("+d+").length "+p+" "+i+") { ";var n=t,y=y||[];y.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(o+=" , message: 'should NOT have ",o+="maxProperties"==t?"more":"fewer",o+=" than ",o+=h?"' + "+i+" + '":""+s,o+=" properties' "),e.opts.verbose&&(o+=" , schema: ",o+=h?"validate.schema"+c:""+s,o+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var m=o;return o=y.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+m+"]); ":o+=" validate.errors = ["+m+"]; return false; ":o+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",o+="} ",f&&(o+=" else { "),o}},{}],19:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.schema[t],o=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,s=e.util.copy(e),c="";s.level++;var l="valid"+s.level,f=s.baseId,d=!0,h=i;if(h)for(var p,y=-1,m=h.length-1;y0||!1===p:e.util.schemaHasRules(p,e.RULES.all))&&(d=!1,s.schema=p,s.schemaPath=o+"["+y+"]",s.errSchemaPath=a+"/"+y,n+=" "+e.validate(s)+" ",s.baseId=f,u&&(n+=" if ("+l+") { ",c+="}"));return u&&(n+=d?" if (true) { ":" "+c.slice(0,-1)+" "),n}},{}],20:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var y="valid"+h.level;if(a.every(function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0||!1===t:e.util.schemaHasRules(t,e.RULES.all)})){var m=h.baseId;n+=" var "+d+" = errors; var "+f+" = false; ";var v=e.compositeRule;e.compositeRule=h.compositeRule=!0;var _=a;if(_)for(var g,b=-1,w=_.length-1;b0||!1===a:e.util.schemaHasRules(a,e.RULES.all);if(n+="var "+d+" = errors;var "+f+";",g){var b=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=a,h.schemaPath=u,h.errSchemaPath=s,n+=" var "+p+" = false; for (var "+y+" = 0; "+y+" < "+l+".length; "+y+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var w=l+"["+y+"]";h.dataPathArr[m]=y;var E=e.validate(h);h.baseId=_,e.util.varOccurences(E,v)<2?n+=" "+e.util.varReplace(E,v,w)+" ":n+=" var "+v+" = "+w+"; "+E+" ",n+=" if ("+p+") break; } ",e.compositeRule=h.compositeRule=b,n+=" if (!"+p+") {"}else n+=" if ("+l+".length == 0) {";var A=A||[];A.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should contain a valid item' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var O=n;return n=A.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+O+"]); ":n+=" validate.errors = ["+O+"]; return false; ":n+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { ",g&&(n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),e.opts.allErrors&&(n+=" } "),n}},{}],24:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i,o=" ",a=e.level,u=e.dataLevel,s=e.schema[t],c=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,d="data"+(u||""),h="valid"+a,p="errs__"+a,y=e.opts.$data&&s&&s.$data;y?(o+=" var schema"+a+" = "+e.util.getData(s.$data,u,e.dataPathArr)+"; ",i="schema"+a):i=s;var m,v,_,g,b,w=this,E="definition"+a,A=w.definition,O="";if(y&&A.$data){b="keywordValidate"+a;var S=A.validateSchema;o+=" var "+E+" = RULES.custom['"+t+"'].definition; var "+b+" = "+E+".validate;"}else{if(!(g=e.useCustomRule(w,s,e.schema,e)))return;i="validate.schema"+c,b=g.code,m=A.compile,v=A.inline,_=A.macro}var P=b+".errors",D="i"+a,C="ruleErr"+a,k=A.async;if(k&&!e.async)throw new Error("async keyword in sync schema");if(v||_||(o+=P+" = null;"),o+="var "+p+" = errors;var "+h+";",y&&A.$data&&(O+="}",o+=" if ("+i+" === undefined) { "+h+" = true; } else { ",S&&(O+="}",o+=" "+h+" = "+E+".validateSchema("+i+"); if ("+h+") { ")),v)A.statements?o+=" "+g.validate+" ":o+=" "+h+" = "+g.validate+"; ";else if(_){var T=e.util.copy(e),O="";T.level++;var F="valid"+T.level;T.schema=g.validate,T.schemaPath="";var j=e.compositeRule;e.compositeRule=T.compositeRule=!0;var x=e.validate(T).replace(/validate\.schema/g,b);e.compositeRule=T.compositeRule=j,o+=" "+x}else{var B=B||[];B.push(o),o="",o+=" "+b+".call( ",e.opts.passContext?o+="this":o+="self",m||!1===A.schema?o+=" , "+d+" ":o+=" , "+i+" , "+d+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var M=u?"data"+(u-1||""):"parentData",R=u?e.dataPathArr[u]:"parentDataProperty";o+=" , "+M+" , "+R+" , rootData ) ";var I=o;o=B.pop(),!1===A.errors?(o+=" "+h+" = ",k&&(o+="await "),o+=I+"; "):k?(P="customErrors"+a,o+=" var "+P+" = null; try { "+h+" = await "+I+"; } catch (e) { "+h+" = false; if (e instanceof ValidationError) "+P+" = e.errors; else throw e; } "):o+=" "+P+" = null; "+h+" = "+I+"; "}if(A.modifying&&(o+=" if ("+M+") "+d+" = "+M+"["+R+"];"),o+=""+O,A.valid)f&&(o+=" if (true) { ");else{o+=" if ( ",void 0===A.valid?(o+=" !",o+=_?""+F:""+h):o+=" "+!A.valid+" ",o+=") { ",n=w.keyword;var B=B||[];B.push(o),o="";var B=B||[];B.push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(n||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var N=o;o=B.pop(),!e.compositeRule&&f?e.async?o+=" throw new ValidationError(["+N+"]); ":o+=" validate.errors = ["+N+"]; return false; ":o+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var U=o;o=B.pop(),v?A.errors?"full"!=A.errors&&(o+=" for (var "+D+"="+p+"; "+D+"0||!1===_:e.util.schemaHasRules(_,e.RULES.all))&&(n+=" "+p+" = true; if ( "+l+e.util.getProperty(w)+" !== undefined ",v&&(n+=" && Object.prototype.hasOwnProperty.call("+l+", '"+e.util.escapeQuotes(w)+"') "),n+=") { ",d.schema=_,d.schemaPath=u+e.util.getProperty(w),d.errSchemaPath=s+"/"+e.util.escapeFragment(w),n+=" "+e.validate(d)+" ",d.baseId=M,n+=" } ",c&&(n+=" if ("+p+") { ",h+="}"))}return c&&(n+=" "+h+" if ("+f+" == errors) {"),n}},{}],26:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d=e.opts.$data&&a&&a.$data;d&&(n+=" var schema"+i+" = "+e.util.getData(a.$data,o,e.dataPathArr)+"; ");var h="i"+i,p="schema"+i;d||(n+=" var "+p+" = validate.schema"+u+";"),n+="var "+f+";",d&&(n+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),n+=f+" = false;for (var "+h+"=0; "+h+"<"+p+".length; "+h+"++) if (equal("+l+", "+p+"["+h+"])) { "+f+" = true; break; }",d&&(n+=" } "),n+=" if (!"+f+") { ";var y=y||[];y.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { allowedValues: schema"+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var m=n;return n=y.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+m+"]); ":n+=" validate.errors = ["+m+"]; return false; ":n+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",c&&(n+=" else { "),n}},{}],27:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||"");if(!1===e.opts.format)return c&&(n+=" if (true) { "),n;var f,d=e.opts.$data&&a&&a.$data;d?(n+=" var schema"+i+" = "+e.util.getData(a.$data,o,e.dataPathArr)+"; ",f="schema"+i):f=a;var h=e.opts.unknownFormats,p=Array.isArray(h);if(d){var y="format"+i,m="isObject"+i,v="formatType"+i;n+=" var "+y+" = formats["+f+"]; var "+m+" = typeof "+y+" == 'object' && !("+y+" instanceof RegExp) && "+y+".validate; var "+v+" = "+m+" && "+y+".type || 'string'; if ("+m+") { ",e.async&&(n+=" var async"+i+" = "+y+".async; "),n+=" "+y+" = "+y+".validate; } if ( ",d&&(n+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),n+=" (","ignore"!=h&&(n+=" ("+f+" && !"+y+" ",p&&(n+=" && self._opts.unknownFormats.indexOf("+f+") == -1 "),n+=") || "),n+=" ("+y+" && "+v+" == '"+r+"' && !(typeof "+y+" == 'function' ? ",e.async?n+=" (async"+i+" ? await "+y+"("+l+") : "+y+"("+l+")) ":n+=" "+y+"("+l+") ",n+=" : "+y+".test("+l+"))))) {"}else{var y=e.formats[a];if(!y){if("ignore"==h)return e.logger.warn('unknown format "'+a+'" ignored in schema at path "'+e.errSchemaPath+'"'),c&&(n+=" if (true) { "),n;if(p&&h.indexOf(a)>=0)return c&&(n+=" if (true) { "),n;throw new Error('unknown format "'+a+'" is used in schema at path "'+e.errSchemaPath+'"')}var m="object"==typeof y&&!(y instanceof RegExp)&&y.validate,v=m&&y.type||"string";if(m){var _=!0===y.async;y=y.validate}if(v!=r)return c&&(n+=" if (true) { "),n;if(_){if(!e.async)throw new Error("async format in sync schema");var g="formats"+e.util.getProperty(a)+".validate";n+=" if (!(await "+g+"("+l+"))) { "}else{n+=" if (! ";var g="formats"+e.util.getProperty(a);m&&(g+=".validate"),n+="function"==typeof y?" "+g+"("+l+") ":" "+g+".test("+l+") ",n+=") { "}}var b=b||[];b.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { format: ",n+=d?""+f:""+e.util.toQuotedString(a),n+=" } ",!1!==e.opts.messages&&(n+=" , message: 'should match format \"",n+=d?"' + "+f+" + '":""+e.util.escapeQuotes(a),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+u:""+e.util.toQuotedString(a),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var w=n;return n=b.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+w+"]); ":n+=" validate.errors = ["+w+"]; return false; ":n+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},{}],28:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e);h.level++;var p="valid"+h.level,y=e.schema.then,m=e.schema.else,v=void 0!==y&&(e.opts.strictKeywords?"object"==typeof y&&Object.keys(y).length>0||!1===y:e.util.schemaHasRules(y,e.RULES.all)),_=void 0!==m&&(e.opts.strictKeywords?"object"==typeof m&&Object.keys(m).length>0||!1===m:e.util.schemaHasRules(m,e.RULES.all)),g=h.baseId;if(v||_){var b;h.createErrors=!1,h.schema=a,h.schemaPath=u,h.errSchemaPath=s,n+=" var "+d+" = errors; var "+f+" = true; ";var w=e.compositeRule;e.compositeRule=h.compositeRule=!0,n+=" "+e.validate(h)+" ",h.baseId=g,h.createErrors=!0,n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.compositeRule=h.compositeRule=w,v?(n+=" if ("+p+") { ",h.schema=e.schema.then,h.schemaPath=e.schemaPath+".then",h.errSchemaPath=e.errSchemaPath+"/then",n+=" "+e.validate(h)+" ",h.baseId=g,n+=" "+f+" = "+p+"; ",v&&_?(b="ifClause"+i,n+=" var "+b+" = 'then'; "):b="'then'",n+=" } ",_&&(n+=" else { ")):n+=" if (!"+p+") { ",_&&(h.schema=e.schema.else,h.schemaPath=e.schemaPath+".else",h.errSchemaPath=e.errSchemaPath+"/else",n+=" "+e.validate(h)+" ",h.baseId=g,n+=" "+f+" = "+p+"; ",v&&_?(b="ifClause"+i,n+=" var "+b+" = 'else'; "):b="'else'",n+=" } "),n+=" if (!"+f+") { var err = ",!1!==e.createErrors?(n+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(n+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},{}],29:[function(e,t,r){"use strict";t.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40}],30:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var y="valid"+h.level,m="i"+i,v=h.dataLevel=e.dataLevel+1,_="data"+v,g=e.baseId;if(n+="var "+d+" = errors;var "+f+";",Array.isArray(a)){var b=e.schema.additionalItems;if(!1===b){n+=" "+f+" = "+l+".length <= "+a.length+"; ";var w=s;s=e.errSchemaPath+"/additionalItems",n+=" if (!"+f+") { ";var E=E||[];E.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { limit: "+a.length+" } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have more than "+a.length+" items' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var A=n;n=E.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+A+"]); ":n+=" validate.errors = ["+A+"]; return false; ":n+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",s=w,c&&(p+="}",n+=" else { ")}var O=a;if(O)for(var S,P=-1,D=O.length-1;P0||!1===S:e.util.schemaHasRules(S,e.RULES.all)){n+=" "+y+" = true; if ("+l+".length > "+P+") { ";var C=l+"["+P+"]";h.schema=S,h.schemaPath=u+"["+P+"]",h.errSchemaPath=s+"/"+P,h.errorPath=e.util.getPathExpr(e.errorPath,P,e.opts.jsonPointers,!0),h.dataPathArr[v]=P;var k=e.validate(h);h.baseId=g,e.util.varOccurences(k,_)<2?n+=" "+e.util.varReplace(k,_,C)+" ":n+=" var "+_+" = "+C+"; "+k+" ",n+=" } ",c&&(n+=" if ("+y+") { ",p+="}")}if("object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0||!1===b:e.util.schemaHasRules(b,e.RULES.all))){h.schema=b,h.schemaPath=e.schemaPath+".additionalItems", -h.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" "+y+" = true; if ("+l+".length > "+a.length+") { for (var "+m+" = "+a.length+"; "+m+" < "+l+".length; "+m+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var C=l+"["+m+"]";h.dataPathArr[v]=m;var k=e.validate(h);h.baseId=g,e.util.varOccurences(k,_)<2?n+=" "+e.util.varReplace(k,_,C)+" ":n+=" var "+_+" = "+C+"; "+k+" ",c&&(n+=" if (!"+y+") break; "),n+=" } } ",c&&(n+=" if ("+y+") { ",p+="}")}}else if(e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0||!1===a:e.util.schemaHasRules(a,e.RULES.all)){h.schema=a,h.schemaPath=u,h.errSchemaPath=s,n+=" for (var "+m+" = 0; "+m+" < "+l+".length; "+m+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var C=l+"["+m+"]";h.dataPathArr[v]=m;var k=e.validate(h);h.baseId=g,e.util.varOccurences(k,_)<2?n+=" "+e.util.varReplace(k,_,C)+" ":n+=" var "+_+" = "+C+"; "+k+" ",c&&(n+=" if (!"+y+") break; "),n+=" }"}return c&&(n+=" "+p+" if ("+d+" == errors) {"),n}},{}],31:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i=" ",o=e.level,a=e.dataLevel,u=e.schema[t],s=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,f="data"+(a||""),d=e.opts.$data&&u&&u.$data;if(d?(i+=" var schema"+o+" = "+e.util.getData(u.$data,a,e.dataPathArr)+"; ",n="schema"+o):n=u,!d&&"number"!=typeof u)throw new Error(t+" must be number");i+="var division"+o+";if (",d&&(i+=" "+n+" !== undefined && ( typeof "+n+" != 'number' || "),i+=" (division"+o+" = "+f+" / "+n+", ",e.opts.multipleOfPrecision?i+=" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":i+=" division"+o+" !== parseInt(division"+o+") ",i+=" ) ",d&&(i+=" ) "),i+=" ) { ";var h=h||[];h.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+n+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be multiple of ",i+=d?"' + "+n:n+"'"),e.opts.verbose&&(i+=" , schema: ",i+=d?"validate.schema"+s:""+u,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var p=i;return i=h.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+p+"]); ":i+=" validate.errors = ["+p+"]; return false; ":i+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",l&&(i+=" else { "),i}},{}],32:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="errs__"+i,d=e.util.copy(e);d.level++;var h="valid"+d.level;if(e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0||!1===a:e.util.schemaHasRules(a,e.RULES.all)){d.schema=a,d.schemaPath=u,d.errSchemaPath=s,n+=" var "+f+" = errors; ";var p=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var y;d.opts.allErrors&&(y=d.opts.allErrors,d.opts.allErrors=!1),n+=" "+e.validate(d)+" ",d.createErrors=!0,y&&(d.opts.allErrors=y),e.compositeRule=d.compositeRule=p,n+=" if ("+h+") { ";var m=m||[];m.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var v=n;n=m.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+v+"]); ":n+=" validate.errors = ["+v+"]; return false; ":n+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",!1!==e.createErrors?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},{}],33:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="valid"+i,d="errs__"+i,h=e.util.copy(e),p="";h.level++;var y="valid"+h.level,m=h.baseId,v="prevValid"+i,_="passingSchemas"+i;n+="var "+d+" = errors , "+v+" = false , "+f+" = false , "+_+" = null; ";var g=e.compositeRule;e.compositeRule=h.compositeRule=!0;var b=a;if(b)for(var w,E=-1,A=b.length-1;E0||!1===w:e.util.schemaHasRules(w,e.RULES.all))?(h.schema=w,h.schemaPath=u+"["+E+"]",h.errSchemaPath=s+"/"+E,n+=" "+e.validate(h)+" ",h.baseId=m):n+=" var "+y+" = true; ",E&&(n+=" if ("+y+" && "+v+") { "+f+" = false; "+_+" = ["+_+", "+E+"]; } else { ",p+="}"),n+=" if ("+y+") { "+f+" = "+v+" = true; "+_+" = "+E+"; }";return e.compositeRule=h.compositeRule=g,n+=p+"if (!"+f+") { var err = ",!1!==e.createErrors?(n+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { passingSchemas: "+_+" } ",!1!==e.opts.messages&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(e.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},{}],34:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,i=" ",o=e.level,a=e.dataLevel,u=e.schema[t],s=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,f="data"+(a||""),d=e.opts.$data&&u&&u.$data;d?(i+=" var schema"+o+" = "+e.util.getData(u.$data,a,e.dataPathArr)+"; ",n="schema"+o):n=u;var h=d?"(new RegExp("+n+"))":e.usePattern(u);i+="if ( ",d&&(i+=" ("+n+" !== undefined && typeof "+n+" != 'string') || "),i+=" !"+h+".test("+f+") ) { ";var p=p||[];p.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",i+=d?""+n:""+e.util.toQuotedString(u),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match pattern \"",i+=d?"' + "+n+" + '":""+e.util.escapeQuotes(u),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=d?"validate.schema"+s:""+e.util.toQuotedString(u),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var y=i;return i=p.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+y+"]); ":i+=" validate.errors = ["+y+"]; return false; ":i+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",l&&(i+=" else { "),i}},{}],35:[function(e,t,r){"use strict";t.exports=function(e,t,r){function n(e){return"__proto__"!==e}var i=" ",o=e.level,a=e.dataLevel,u=e.schema[t],s=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,f="data"+(a||""),d="errs__"+o,h=e.util.copy(e),p="";h.level++;var y="valid"+h.level,m="key"+o,v="idx"+o,_=h.dataLevel=e.dataLevel+1,g="data"+_,b="dataProperties"+o,w=Object.keys(u||{}).filter(n),E=e.schema.patternProperties||{},A=Object.keys(E).filter(n),O=e.schema.additionalProperties,S=w.length||A.length,P=!1===O,D="object"==typeof O&&Object.keys(O).length,C=e.opts.removeAdditional,k=P||D||C,T=e.opts.ownProperties,F=e.baseId,j=e.schema.required;if(j&&(!e.opts.$data||!j.$data)&&j.length8)i+=" || validate.schema"+s+".hasOwnProperty("+m+") ";else{var B=w;if(B)for(var M,R=-1,I=B.length-1;R0||!1===ee:e.util.schemaHasRules(ee,e.RULES.all)){var te=e.util.getProperty(M),$=f+te,re=J&&void 0!==ee.default;h.schema=ee,h.schemaPath=s+te,h.errSchemaPath=c+"/"+e.util.escapeFragment(M),h.errorPath=e.util.getPath(e.errorPath,M,e.opts.jsonPointers),h.dataPathArr[_]=e.util.toQuotedString(M);var K=e.validate(h);if(h.baseId=F,e.util.varOccurences(K,g)<2){K=e.util.varReplace(K,g,$);var ne=$}else{var ne=g;i+=" var "+g+" = "+$+"; "}if(re)i+=" "+K+" ";else{if(x&&x[M]){i+=" if ( "+ne+" === undefined ",T&&(i+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(M)+"') "),i+=") { "+y+" = false; ";var G=e.errorPath,V=c,ie=e.util.escapeQuotes(M);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(G,M,e.opts.jsonPointers)),c=e.errSchemaPath+"/required";var H=H||[];H.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+ie+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+ie+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var W=i;i=H.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+W+"]); ":i+=" validate.errors = ["+W+"]; return false; ":i+=" var err = "+W+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c=V,e.errorPath=G,i+=" } else { "}else l?(i+=" if ( "+ne+" === undefined ",T&&(i+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(M)+"') "),i+=") { "+y+" = true; } else { "):(i+=" if ("+ne+" !== undefined ",T&&(i+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(M)+"') "),i+=" ) { ");i+=" "+K+" } "}}l&&(i+=" if ("+y+") { ",p+="}")}}if(A.length){var oe=A;if(oe)for(var U,ae=-1,ue=oe.length-1;ae0||!1===ee:e.util.schemaHasRules(ee,e.RULES.all)){h.schema=ee,h.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(U),h.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(U),i+=T?" "+b+" = "+b+" || Object.keys("+f+"); for (var "+v+"=0; "+v+"<"+b+".length; "+v+"++) { var "+m+" = "+b+"["+v+"]; ":" for (var "+m+" in "+f+") { ",i+=" if ("+e.usePattern(U)+".test("+m+")) { ",h.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);var $=f+"["+m+"]";h.dataPathArr[_]=m;var K=e.validate(h);h.baseId=F,e.util.varOccurences(K,g)<2?i+=" "+e.util.varReplace(K,g,$)+" ":i+=" var "+g+" = "+$+"; "+K+" ",l&&(i+=" if (!"+y+") break; "),i+=" } ",l&&(i+=" else "+y+" = true; "),i+=" } ",l&&(i+=" if ("+y+") { ",p+="}")}}}return l&&(i+=" "+p+" if ("+d+" == errors) {"),i}},{}],36:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n=" ",i=e.level,o=e.dataLevel,a=e.schema[t],u=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,l="data"+(o||""),f="errs__"+i,d=e.util.copy(e);d.level++;var h="valid"+d.level;if(n+="var "+f+" = errors;",e.opts.strictKeywords?"object"==typeof a&&Object.keys(a).length>0||!1===a:e.util.schemaHasRules(a,e.RULES.all)){d.schema=a,d.schemaPath=u,d.errSchemaPath=s;var p="key"+i,y="idx"+i,m="i"+i,v="' + "+p+" + '",_=d.dataLevel=e.dataLevel+1,g="data"+_,b="dataProperties"+i,w=e.opts.ownProperties,E=e.baseId;w&&(n+=" var "+b+" = undefined; "),n+=w?" "+b+" = "+b+" || Object.keys("+l+"); for (var "+y+"=0; "+y+"<"+b+".length; "+y+"++) { var "+p+" = "+b+"["+y+"]; ":" for (var "+p+" in "+l+") { ",n+=" var startErrs"+i+" = errors; ";var A=p,O=e.compositeRule;e.compositeRule=d.compositeRule=!0;var S=e.validate(d);d.baseId=E,e.util.varOccurences(S,g)<2?n+=" "+e.util.varReplace(S,g,A)+" ":n+=" var "+g+" = "+A+"; "+S+" ",e.compositeRule=d.compositeRule=O,n+=" if (!"+h+") { for (var "+m+"=startErrs"+i+"; "+m+"0||!1===g:e.util.schemaHasRules(g,e.RULES.all))||(p[p.length]=m)}}else var p=a;if(d||p.length){var b=e.errorPath,w=d||p.length>=e.opts.loopRequired,E=e.opts.ownProperties;if(c)if(n+=" var missing"+i+"; ",w){d||(n+=" var "+h+" = validate.schema"+u+"; ");var A="i"+i,O="schema"+i+"["+A+"]",S="' + "+O+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,O,e.opts.jsonPointers)),n+=" var "+f+" = true; ",d&&(n+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),n+=" for (var "+A+" = 0; "+A+" < "+h+".length; "+A+"++) { "+f+" = "+l+"["+h+"["+A+"]] !== undefined ",E&&(n+=" && Object.prototype.hasOwnProperty.call("+l+", "+h+"["+A+"]) "),n+="; if (!"+f+") break; } ",d&&(n+=" } "),n+=" if (!"+f+") { ";var P=P||[];P.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { missingProperty: '"+S+"' } ",!1!==e.opts.messages&&(n+=" , message: '",e.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+S+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var D=n;n=P.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+D+"]); ":n+=" validate.errors = ["+D+"]; return false; ":n+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var C=p;if(C)for(var k,A=-1,T=C.length-1;A 1) { ";var p=e.schema.items&&e.schema.items.type,y=Array.isArray(p);if(!p||"object"==p||"array"==p||y&&(p.indexOf("object")>=0||p.indexOf("array")>=0))i+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+f+"[i], "+f+"[j])) { "+d+" = false; break outer; } } } ";else{i+=" var itemIndices = {}, item; for (;i--;) { var item = "+f+"[i]; ";var m="checkDataType"+(y?"s":"");i+=" if ("+e.util[m](p,"item",e.opts.strictNumbers,!0)+") continue; ",y&&(i+=" if (typeof item == 'string') item = '\"' + item; "),i+=" if (typeof itemIndices[item] == 'number') { "+d+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}i+=" } ",h&&(i+=" } "),i+=" if (!"+d+") { ";var v=v||[];v.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(i+=" , schema: ",i+=h?"validate.schema"+s:""+u,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),i+=" } "):i+=" {} ";var _=i;i=v.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+_+"]); ":i+=" validate.errors = ["+_+"]; return false; ":i+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",l&&(i+=" else { ")}else l&&(i+=" if (true) { ");return i}},{}],40:[function(e,t,r){"use strict";t.exports=function(e,t,r){function n(e){for(var t=e.rules,r=0;r=0;n--)if(i[n]!=o[n])return!1;for(n=i.length-1;n>=0;n--)if(r=i[n],!s(e[r],t[r]))return!1;return!0}function f(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function d(e,t,r,n){var i;h.isString(r)&&(n=r,r=null);try{t()}catch(e){i=e}if(n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&a(i,r,"Missing expected exception"+n),!e&&f(i,r)&&a(i,r,"Got unwanted exception"+n),e&&i&&r&&!f(i,r)||!e&&i)throw i}var h=e("util/"),p=Array.prototype.slice,y=Object.prototype.hasOwnProperty,m=t.exports=u;m.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var t=e.stackStartFunction||a;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=t.name,u=n.indexOf("\n"+i);if(u>=0){var s=n.indexOf("\n",u+1);n=n.substring(s+1)}this.stack=n}}},h.inherits(m.AssertionError,Error),m.fail=a,m.ok=u,m.equal=function(e,t,r){e!=t&&a(e,t,r,"==",m.equal)},m.notEqual=function(e,t,r){e==t&&a(e,t,r,"!=",m.notEqual)},m.deepEqual=function(e,t,r){s(e,t)||a(e,t,r,"deepEqual",m.deepEqual)},m.notDeepEqual=function(e,t,r){s(e,t)&&a(e,t,r,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(e,t,r){e!==t&&a(e,t,r,"===",m.strictEqual)},m.notStrictEqual=function(e,t,r){e===t&&a(e,t,r,"!==",m.notStrictEqual)},m.throws=function(e,t,r){d.apply(this,[!0].concat(p.call(arguments)))},m.doesNotThrow=function(e,t){d.apply(this,[!1].concat(p.call(arguments)))},m.ifError=function(e){if(e)throw e};var v=Object.keys||function(e){var t=[];for(var r in e)y.call(e,r)&&t.push(r);return t}},{"util/":47}],45:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],46:[function(e,t,r){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],47:[function(e,t,r){(function(t,n){function i(e,t){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(t)?n.showHidden=t:t&&r._extend(n,t),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),s(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function a(e,t){return e}function u(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function s(e,t,n){if(e.customInspect&&t&&P(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return g(i)||(i=s(e,i,n)),i}var o=c(e,t);if(o)return o;var a=Object.keys(t),y=u(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),S(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(t);if(0===a.length){if(P(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(E(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(O(t))return e.stylize(Date.prototype.toString.call(t),"date");if(S(t))return l(t)}var v="",_=!1,b=["{","}"];if(p(t)&&(_=!0,b=["[","]"]),P(t)){v=" [Function"+(t.name?": "+t.name:"")+"]"}if(E(t)&&(v=" "+RegExp.prototype.toString.call(t)),O(t)&&(v=" "+Date.prototype.toUTCString.call(t)),S(t)&&(v=" "+l(t)),0===a.length&&(!_||0==t.length))return b[0]+v+b[1];if(n<0)return E(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var w;return w=_?f(e,t,n,y,a):a.map(function(r){return d(e,t,n,y,r,_)}),e.seen.pop(),h(w,v,b)}function c(e,t){if(w(t))return e.stylize("undefined","undefined");if(g(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return _(t)?e.stylize(""+t,"number"):y(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,n,i){for(var o=[],a=0,u=t.length;a-1&&(u=o?u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+u.split("\n").map(function(e){return" "+e}).join("\n"))):u=e.stylize("[Circular]","special")),w(a)){if(o&&i.match(/^\d+$/))return u;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+u}function h(e,t,r){var n=0;return e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function p(e){return Array.isArray(e)}function y(e){return"boolean"==typeof e}function m(e){return null===e}function v(e){return null==e}function _(e){return"number"==typeof e}function g(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function w(e){return void 0===e}function E(e){return A(e)&&"[object RegExp]"===C(e)}function A(e){return"object"==typeof e&&null!==e}function O(e){return A(e)&&"[object Date]"===C(e)}function S(e){return A(e)&&("[object Error]"===C(e)||e instanceof Error)}function P(e){return"function"==typeof e}function D(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function C(e){return Object.prototype.toString.call(e)}function k(e){return e<10?"0"+e.toString(10):e.toString(10)}function T(){var e=new Date,t=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(":");return[e.getDate(),M[e.getMonth()],t].join(" ")}function F(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;r.format=function(e){if(!g(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),u=n[r];r0)throw new Error("Invalid string. Length must be a multiple of 4");var l=e.length;s="="===e.charAt(l-2)?2:"="===e.charAt(l-1)?1:0,c=new i(3*e.length/4-s),a=s>0?e.length-4:e.length;var f=0;for(n=0,o=0;n>16),r((65280&u)>>8),r(255&u);return 2===s?(u=t(e.charAt(n))<<2|t(e.charAt(n+1))>>4,r(255&u)):1===s&&(u=t(e.charAt(n))<<10|t(e.charAt(n+1))<<4|t(e.charAt(n+2))>>2,r(u>>8&255),r(255&u)),c}function n(e){function t(e){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)}var r,n,i,o=e.length%3,a="";for(r=0,i=e.length-o;r>18&63)+t(e>>12&63)+t(e>>6&63)+t(63&e)}(n);switch(o){case 1:n=e[e.length-1],a+=t(n>>2),a+=t(n<<4&63),a+="==";break;case 2:n=(e[e.length-2]<<8)+e[e.length-1],a+=t(n>>10),a+=t(n>>4&63),a+=t(n<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),a="/".charCodeAt(0),u="0".charCodeAt(0),s="a".charCodeAt(0),c="A".charCodeAt(0),l="-".charCodeAt(0),f="_".charCodeAt(0);e.toByteArray=r,e.fromByteArray=n}(void 0===r?this.base64js={}:r)},{}],49:[function(e,t,r){},{}],50:[function(e,t,r){function n(){}var i=t.exports={};i.nextTick=function(){var e="undefined"!=typeof window&&window.setImmediate,t="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var r=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||null===t)&&"process-tick"===e.data&&(e.stopPropagation(),r.length>0)){r.shift()()}},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),i.title="browser",i.browser=!0,i.env={},i.argv=[],i.on=n,i.addListener=n,i.once=n,i.off=n,i.removeListener=n,i.removeAllListeners=n,i.emit=n,i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],51:[function(e,t,r){function n(e){if(e&&!u.isEncoding(e))throw new Error("Unknown encoding: "+e)}function i(e){return e.toString(this.encoding)}function o(e){var t=this.charReceived=e.length%2;return this.charLength=t?2:0,t}function a(e){var t=this.charReceived=e.length%3;return this.charLength=t?3:0,t}var u=e("buffer").Buffer,s=r.StringDecoder=function(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),n(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new u(6),this.charReceived=0,this.charLength=0};s.prototype.write=function(e){for(var t="",r=0;this.charLength;){var n=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,r,n),this.charReceived+=n-r,r=n,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,n==e.length)return t;e=e.slice(n,e.length);break}this.charLength+=this.surrogateSize,t=""}var o=this.detectIncompleteChar(e),a=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-o,a),this.charReceived=o,a-=o),t+=e.toString(this.encoding,0,a);var a=t.length-1,i=t.charCodeAt(a);if(i>=55296&&i<=56319){var u=this.surrogateSize;return this.charLength+=u,this.charReceived+=u,this.charBuffer.copy(this.charBuffer,u,0,u),this.charBuffer.write(t.charAt(t.length-1),this.encoding),t.substring(0,a)}return t},s.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}return t},s.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t}},{buffer:52}],52:[function(e,t,r){function n(e,t,r){if(!(this instanceof n))return new n(e,t,r);var i=typeof e;if("base64"===t&&"string"===i)for(e=C(e);e.length%4!=0;)e+="=";var o;if("number"===i)o=T(e);else if("string"===i)o=n.byteLength(e,t);else{if("object"!==i)throw new Error("First argument needs to be a number, array or string.");o=T(e.length)}var a;n._useTypedArrays?a=n._augment(new Uint8Array(o)):(a=this,a.length=o,a._isBuffer=!0);var u;if(n._useTypedArrays&&"number"==typeof e.byteLength)a._set(e);else if(j(e))for(u=0;uo&&(i=o):i=o;var a=t.length;q(a%2==0,"Invalid hex string"),i>a/2&&(i=a/2);for(var u=0;un)&&(r=n);for(var i="",o=t;o=i)){var o;return r?(o=e[t],t+1=i)){var o;return r?(t+2>>0)):(t+1>>0),o}}function _(e,t,r,n){if(n||(q("boolean"==typeof r,"missing or invalid endian"),q(void 0!==t&&null!==t,"missing offset"),q(t+1=e.length)){var i=m(e,t,r,!0);return 32768&i?-1*(65535-i+1):i}}function g(e,t,r,n){if(n||(q("boolean"==typeof r,"missing or invalid endian"),q(void 0!==t&&null!==t,"missing offset"),q(t+3=e.length)){var i=v(e,t,r,!0);return 2147483648&i?-1*(4294967295-i+1):i}}function b(e,t,r,n){return n||(q("boolean"==typeof r,"missing or invalid endian"),q(t+3=o))for(var a=0,u=Math.min(o-r,2);a>>8*(n?a:1-a)}function A(e,t,r,n,i){i||(q(void 0!==t&&null!==t,"missing value"),q("boolean"==typeof n,"missing or invalid endian"),q(void 0!==r&&null!==r,"missing offset"),q(r+3=o))for(var a=0,u=Math.min(o-r,4);a>>8*(n?a:3-a)&255}function O(e,t,r,n,i){i||(q(void 0!==t&&null!==t,"missing value"),q("boolean"==typeof n,"missing or invalid endian"),q(void 0!==r&&null!==r,"missing offset"),q(r+1=e.length||(t>=0?E(e,t,r,n,i):E(e,65535+t+1,r,n,i))}function S(e,t,r,n,i){i||(q(void 0!==t&&null!==t,"missing value"),q("boolean"==typeof n,"missing or invalid endian"),q(void 0!==r&&null!==r,"missing offset"),q(r+3=e.length||(t>=0?A(e,t,r,n,i):A(e,4294967295+t+1,r,n,i))}function P(e,t,r,n,i){i||(q(void 0!==t&&null!==t,"missing value"),q("boolean"==typeof n,"missing or invalid endian"),q(void 0!==r&&null!==r,"missing offset"),q(r+3=e.length||H.write(e,t,r,n,23,4)}function D(e,t,r,n,i){i||(q(void 0!==t&&null!==t,"missing value"),q("boolean"==typeof n,"missing or invalid endian"),q(void 0!==r&&null!==r,"missing offset"),q(r+7=e.length||H.write(e,t,r,n,52,8)}function C(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function k(e,t,r){return"number"!=typeof e?r:(e=~~e)>=t?t:e>=0?e:(e+=t,e>=0?e:0)}function T(e){return e=~~Math.ceil(+e),e<0?0:e}function F(e){return(Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)})(e)}function j(e){return F(e)||n.isBuffer(e)||e&&"object"==typeof e&&"number"==typeof e.length}function x(e){return e<16?"0"+e.toString(16):e.toString(16)}function B(e){for(var t=[],r=0;r=55296&&n<=57343&&r++;for(var o=encodeURIComponent(e.slice(i,r+1)).substr(1).split("%"),a=0;a>8,n=t%256,i.push(n),i.push(r);return i}function I(e){return V.toByteArray(e)}function N(e,t,r,n){for(var i=0;i=t.length||i>=e.length);i++)t[i+r]=e[i];return i}function U(e){try{return decodeURIComponent(e)}catch(e){return String.fromCharCode(65533)}}function L(e,t){q("number"==typeof e,"cannot write a non-number as a number"),q(e>=0,"specified a negative value for writing an unsigned value"),q(e<=t,"value is larger than maximum value for type"),q(Math.floor(e)===e,"value has a fractional component")}function z(e,t,r){q("number"==typeof e,"cannot write a non-number as a number"),q(e<=t,"value larger than maximum allowed value"),q(e>=r,"value smaller than minimum allowed value"),q(Math.floor(e)===e,"value has a fractional component")}function G(e,t,r){q("number"==typeof e,"cannot write a non-number as a number"),q(e<=t,"value larger than maximum allowed value"),q(e>=r,"value smaller than minimum allowed value")}function q(e,t){if(!e)throw new Error(t||"Failed assertion")}var V=e("base64-js"),H=e("ieee754");r.Buffer=n,r.SlowBuffer=n,r.INSPECT_MAX_BYTES=50,n.poolSize=8192,n._useTypedArrays=function(){try{var e=new ArrayBuffer(0),t=new Uint8Array(e);return t.foo=function(){return 42},42===t.foo()&&"function"==typeof t.subarray}catch(e){return!1}}(),n.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.isBuffer=function(e){return!(null===e||void 0===e||!e._isBuffer)},n.byteLength=function(e,t){var r;switch(e+="",t||"utf8"){case"hex":r=e.length/2;break;case"utf8":case"utf-8":r=B(e).length;break;case"ascii":case"binary":case"raw":r=e.length;break;case"base64":r=I(e).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":r=2*e.length;break;default:throw new Error("Unknown encoding")}return r},n.concat=function(e,t){if(q(F(e),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."),0===e.length)return new n(0);if(1===e.length)return e[0];var r;if("number"!=typeof t)for(t=0,r=0;rf&&(r=f):r=f,n=String(n||"utf8").toLowerCase();var d;switch(n){case"hex":d=i(this,e,t,r);break;case"utf8":case"utf-8":d=o(this,e,t,r);break;case"ascii":d=a(this,e,t,r);break;case"binary":d=u(this,e,t,r);break;case"base64":d=s(this,e,t,r);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":d=c(this,e,t,r);break;default:throw new Error("Unknown encoding")}return d},n.prototype.toString=function(e,t,r){var n=this;if(e=String(e||"utf8").toLowerCase(),t=Number(t)||0,(r=void 0!==r?Number(r):r=n.length)===t)return"";var i;switch(e){case"hex":i=p(n,t,r);break;case"utf8":case"utf-8":i=f(n,t,r);break;case"ascii":i=d(n,t,r);break;case"binary":i=h(n,t,r);break;case"base64":i=l(n,t,r);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":i=y(n,t,r);break;default:throw new Error("Unknown encoding")}return i},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},n.prototype.copy=function(e,t,r,i){var o=this;if(r||(r=0),i||0===i||(i=this.length),t||(t=0),i!==r&&0!==e.length&&0!==o.length){q(i>=r,"sourceEnd < sourceStart"),q(t>=0&&t=0&&r=0&&i<=o.length,"sourceEnd out of bounds"),i>this.length&&(i=this.length),e.length-t=this.length))return this[e]},n.prototype.readUInt16LE=function(e,t){return m(this,e,!0,t)},n.prototype.readUInt16BE=function(e,t){return m(this,e,!1,t)},n.prototype.readUInt32LE=function(e,t){return v(this,e,!0,t)},n.prototype.readUInt32BE=function(e,t){return v(this,e,!1,t)},n.prototype.readInt8=function(e,t){if(t||(q(void 0!==e&&null!==e,"missing offset"),q(e=this.length)){return 128&this[e]?-1*(255-this[e]+1):this[e]}},n.prototype.readInt16LE=function(e,t){return _(this,e,!0,t)},n.prototype.readInt16BE=function(e,t){return _(this,e,!1,t)},n.prototype.readInt32LE=function(e,t){return g(this,e,!0,t)},n.prototype.readInt32BE=function(e,t){return g(this,e,!1,t)},n.prototype.readFloatLE=function(e,t){return b(this,e,!0,t)},n.prototype.readFloatBE=function(e,t){return b(this,e,!1,t)},n.prototype.readDoubleLE=function(e,t){return w(this,e,!0,t)},n.prototype.readDoubleBE=function(e,t){return w(this,e,!1,t)},n.prototype.writeUInt8=function(e,t,r){r||(q(void 0!==e&&null!==e,"missing value"),q(void 0!==t&&null!==t,"missing offset"),q(t=this.length||(this[t]=e)},n.prototype.writeUInt16LE=function(e,t,r){E(this,e,t,!0,r)},n.prototype.writeUInt16BE=function(e,t,r){E(this,e,t,!1,r)},n.prototype.writeUInt32LE=function(e,t,r){A(this,e,t,!0,r)},n.prototype.writeUInt32BE=function(e,t,r){A(this,e,t,!1,r)},n.prototype.writeInt8=function(e,t,r){r||(q(void 0!==e&&null!==e,"missing value"),q(void 0!==t&&null!==t,"missing offset"),q(t=this.length||(e>=0?this.writeUInt8(e,t,r):this.writeUInt8(255+e+1,t,r))},n.prototype.writeInt16LE=function(e,t,r){O(this,e,t,!0,r)},n.prototype.writeInt16BE=function(e,t,r){O(this,e,t,!1,r)},n.prototype.writeInt32LE=function(e,t,r){S(this,e,t,!0,r)},n.prototype.writeInt32BE=function(e,t,r){S(this,e,t,!1,r)},n.prototype.writeFloatLE=function(e,t,r){P(this,e,t,!0,r)},n.prototype.writeFloatBE=function(e,t,r){P(this,e,t,!1,r)},n.prototype.writeDoubleLE=function(e,t,r){D(this,e,t,!0,r)},n.prototype.writeDoubleBE=function(e,t,r){D(this,e,t,!1,r)},n.prototype.fill=function(e,t,r){if(e||(e=0),t||(t=0),r||(r=this.length),"string"==typeof e&&(e=e.charCodeAt(0)),q("number"==typeof e&&!isNaN(e),"value is not a number"),q(r>=t,"end < start"),r!==t&&0!==this.length){q(t>=0&&t=0&&r<=this.length,"end out of bounds");for(var n=t;n"},n.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(n._useTypedArrays)return new n(this).buffer;for(var e=new Uint8Array(this.length),t=0,r=e.length;t0;t>>>=1,e+=e)1&t&&(r+=e);return r}function u(e){return/[\r\n]/g.test(e)}function s(e){var t=e.length;return t&&V.code.isLineTerminator(e.charCodeAt(t-1))}function c(e,t){var r;for(r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function l(e,t){function r(e){return"object"==typeof e&&e instanceof Object&&!(e instanceof RegExp)}var n,i;for(n in t)t.hasOwnProperty(n)&&(i=t[n],r(i)?r(e[n])?l(e[n],i):e[n]=l({},i):e[n]=i);return e}function f(e){var t,r,n,i,o;if(e!==e)throw new Error("Numeric literal whose value is NaN");if(e<0||0===e&&1/e<0)throw new Error("Numeric literal whose value is negative");if(e===1/0)return Y?"null":$?"1e400":"1e+400";if(t=""+e,!$||t.length<3)return t;for(r=t.indexOf("."),Y||48!==t.charCodeAt(0)||1!==r||(r=0,t=t.slice(1)),n=t,t=t.replace("e+","e"),i=0,(o=n.indexOf("e"))>0&&(i=+n.slice(o+1),n=n.slice(0,o)),r>=0&&(i-=n.length-r-1,n=+(n.slice(0,r)+n.slice(r+1))+""),o=0;48===n.charCodeAt(n.length+o-1);)--o;return 0!==o&&(i-=o,n=n.slice(0,o)),0!==i&&(n+="e"+i),(n.length1e12&&Math.floor(e)===e&&(n="0x"+e.toString(16)).length255?"\\u"+"0000".slice(r.length)+r:0!==e||V.code.isDecimalDigit(t)?11===e?"\\x0B":"\\x"+"00".slice(r.length)+r:"\\0")}function y(e){if(92===e)return"\\\\";if(10===e)return"\\n";if(13===e)return"\\r";if(8232===e)return"\\u2028";if(8233===e)return"\\u2029";throw new Error("Incorrectly classified character")}function m(e){var t,r,n,i;for(i="double"===J?'"':"'",t=0,r=e.length;t126))){a+=p(n,e.charCodeAt(t+1));continue}}a+=String.fromCharCode(n)}if(i=!("double"===J||"auto"===J&&s=0&&!V.code.isLineTerminator(e.charCodeAt(t));--t);return e.length-1-t}function S(e,t){var r,n,i,o,a,u,s,c;for(r=e.split(/\r\n|[\r\n]/),u=Number.MAX_VALUE,n=1,i=r.length;na&&(u=a)}for(void 0!==t?(s=H,"*"===r[1][u]&&(t+=" "),H=t):(1&u&&--u,s=H),n=1,i=r.length;n0){if(o=t,se){for(i=e.leadingComments[0],t=[],f=i.extendedRange,d=i.range,p=ue.substring(f[0],d[0]),v=(p.match(/\n/g)||[]).length,v>0?(t.push(a("\n",v)),t.push(E(P(i)))):(t.push(p),t.push(P(i))),h=d,r=1,n=e.leadingComments.length;r0?(t.push(a("\n",v)),t.push(E(P(i)))):(t.push(p),t.push(P(i)));else for(u=!s(g(t).toString()),c=a(" ",O(g([H,t,W]).toString())),r=0,n=e.trailingComments.length;r":L.Relational,"<=":L.Relational,">=":L.Relational,in:L.Relational,instanceof:L.Relational,"<<":L.BitwiseSHIFT,">>":L.BitwiseSHIFT,">>>":L.BitwiseSHIFT,"+":L.Additive,"-":L.Additive,"*":L.Multiplicative,"%":L.Multiplicative,"/":L.Multiplicative,"**":L.Exponentiation};var fe=7,de=1;j.prototype.maybeBlock=function(e,t){var r,n,i=this;return n=!ie.comment||!e.leadingComments,e.type===U.BlockStatement&&n?[Z,this.generateStatement(e,t)]:e.type===U.EmptyStatement&&n?";":(A(function(){r=[X,E(i.generateStatement(e,t))]}),r)},j.prototype.maybeBlockSuffix=function(e,t){var r=s(g(t).toString());return e.type!==U.BlockStatement||ie.comment&&e.leadingComments||r?r?[t,H]:[t,X,H]:[t,Z]},j.prototype.generatePattern=function(e,t,r){return e.type===U.Identifier?x(e):this.generateExpression(e,t,r)},j.prototype.generateFunctionParams=function(e){var t,r,n,i;if(i=!1,e.type!==U.ArrowFunctionExpression||e.rest||e.defaults&&0!==e.defaults.length||1!==e.params.length||e.params[0].type!==U.Identifier){for(n=e.type===U.ArrowFunctionExpression?[B(e,!1)]:[],n.push("("),e.defaults&&(i=!0),t=0,r=e.params.length;t")),e.expression?(t.push(Z),r=this.generateExpression(e.body,L.Assignment,fe),"{"===r.toString().charAt(0)&&(r=["(",r,")"]),t.push(r)):t.push(this.maybeBlock(e.body,9)),t},j.prototype.generateIterationForStatement=function(e,t,r){var n=["for"+(t.await?b()+"await":"")+Z+"("],i=this;return A(function(){t.left.type===U.VariableDeclaration?A(function(){n.push(t.left.kind+b()),n.push(i.generateStatement(t.left.declarations[0],0))}):n.push(i.generateExpression(t.left,L.Call,fe)),n=w(n,e),n=[w(n,i.generateExpression(t.right,L.Assignment,fe)),")"]}),n.push(this.maybeBlock(t.body,r)),n},j.prototype.generatePropertyKey=function(e,t){var r=[];return t&&r.push("["),r.push(this.generateExpression(e,L.Assignment,fe)),t&&r.push("]"),r},j.prototype.generateAssignment=function(e,t,r,n,i){return L.Assignment2&&(n=ue.substring(r[0]+1,r[1]-1),"\n"===n[0]&&(i=["{"]),i.push(n)));var a,u,c,l;for(l=de,8&t&&(l|=16),a=0,u=e.body.length;a0&&(e.body[a-1].trailingComments||e.body[a].leadingComments||C(e.body[a-1].range[1],e.body[a].range[0],i))),a===u-1&&(l|=32),c=e.body[a].leadingComments&&se?o.generateStatement(e.body[a],l):E(o.generateStatement(e.body[a],l)),i.push(c),s(g(c).toString())||(se&&a1?A(r):r(),n.push(this.semicolon(t)),n},ThrowStatement:function(e,t){return[w("throw",this.generateExpression(e.argument,L.Sequence,fe)),this.semicolon(t)]},TryStatement:function(e,t){var r,n,i,o;if(r=["try",this.maybeBlock(e.block,de)],r=this.maybeBlockSuffix(e.block,r),e.handlers)for(n=0,i=e.handlers.length;n0?"\n":""],a=17,i=0;i0&&(e.body[i-1].trailingComments||e.body[i].leadingComments||C(e.body[i-1].range[1],e.body[i].range[0],r))),n=E(this.generateStatement(e.body[i],a)),r.push(n),i+10){for(n.push("("),o=0,a=i;o=2&&48===i.charCodeAt(0))&&n.push(" ")),n.push("."),n.push(x(e.property))),k(n,L.Member,t)},MetaProperty:function(e,t,r){var n;return n=[],n.push("string"==typeof e.meta?e.meta:x(e.meta)),n.push("."),n.push("string"==typeof e.property?e.property:x(e.property)),k(n,L.Member,t)},UnaryExpression:function(e,t,r){var n,i,o,a,u;return i=this.generateExpression(e.argument,L.Unary,fe),""===Z?n=w(e.operator,i):(n=[e.operator],e.operator.length>2?n=w(n,i):(a=g(n).toString(),u=a.charCodeAt(a.length-1),o=i.toString().charCodeAt(0),(43===u||45===u)&&u===o||V.code.isIdentifierPartES5(u)&&V.code.isIdentifierPartES5(o)?(n.push(b()),n.push(i)):n.push(i))),k(n,L.Unary,t)},YieldExpression:function(e,t,r){var n;return n=e.delegate?"yield*":"yield",e.argument&&(n=w(n,this.generateExpression(e.argument,L.Yield,fe))),k(n,L.Yield,t)},AwaitExpression:function(e,t,r){return k(w(e.all?"await*":"await",this.generateExpression(e.argument,L.Await,fe)),L.Await,t)},UpdateExpression:function(e,t,r){return e.prefix?k([e.operator,this.generateExpression(e.argument,L.Unary,fe)],L.Unary,t):k([this.generateExpression(e.argument,L.Postfix,fe),e.operator],L.Postfix,t)},FunctionExpression:function(e,t,r){var n=[B(e,!0),"function"];return e.id?(n.push(M(e)||b()),n.push(x(e.id))):n.push(M(e)||Z),n.push(this.generateFunctionBody(e)),n},ArrayPattern:function(e,t,r){return this.ArrayExpression(e,t,r,!0)},ArrayExpression:function(e,t,r,n){var i,o,a=this;return e.elements.length?(o=!n&&e.elements.length>1,i=["[",o?X:""],A(function(t){var r,n;for(r=0,n=e.elements.length;r1,A(function(){o=a.generateExpression(e.properties[0],L.Sequence,fe)}),n||u(g(o).toString())?(A(function(t){var r,u;if(i=["{",X,t,o],n)for(i.push(","+X),r=1,u=e.properties.length;r0||ie.moz.comprehensionExpressionStartsWithAssignment?n=w(n,a):n.push(a)}),e.filter&&(n=w(n,"if"+Z),a=this.generateExpression(e.filter,L.Sequence,fe),n=w(n,["(",a,")"])),ie.moz.comprehensionExpressionStartsWithAssignment||(a=this.generateExpression(e.body,L.Assignment,fe),n=w(n,a)),n.push(e.type===U.GeneratorExpression?")":"]"),n},ComprehensionBlock:function(e,t,r){var n;return n=e.left.type===U.VariableDeclaration?[e.left.kind,b(),this.generateStatement(e.left.declarations[0],0)]:this.generateExpression(e.left,L.Call,fe),n=w(n,e.of?"of":"in"),n=w(n,this.generateExpression(e.right,L.Sequence,fe)),["for"+Z+"(",n,")"]},SpreadElement:function(e,t,r){return["...",this.generateExpression(e.argument,L.Assignment,fe)]},TaggedTemplateExpression:function(e,t,r){var n=3;return 2&r||(n=1),k([this.generateExpression(e.tag,L.Call,n),this.generateExpression(e.quasi,L.Primary,4)],L.TaggedTemplate,t)},TemplateElement:function(e,t,r){return e.value.raw},TemplateLiteral:function(e,t,r){var n,i,o;for(n=["`"],i=0,o=e.quasis.length;i>>1,o=i+r,t(e[o])?n=r:(i=o+1,n-=r+1);return i}function o(e,t){this.parent=e,this.key=t}function a(e,t,r,n){this.node=e,this.path=t,this.wrap=r,this.ref=n}function u(){}function s(e){return null!=e&&("object"==typeof e&&"string"==typeof e.type)}function c(e,t){return(e===p.ObjectExpression||e===p.ObjectPattern)&&"properties"===t}function l(e,t){return(new u).traverse(e,t)}function f(e,t){return(new u).replace(e,t)}function d(e,t){var r;return r=i(t,function(t){return t.range[0]>e.range[0]}),e.extendedRange=[e.range[0],e.range[1]],r!==t.length&&(e.extendedRange[1]=t[r].range[0]),r-=1,r>=0&&(e.extendedRange[0]=t[r].range[1]),e}function h(e,t,r){var i,o,a,u,s=[];if(!e.range)throw new Error("attachComments needs range information");if(!r.length){if(t.length){for(a=0,o=t.length;ae.range[0]));)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),s.splice(u,1)):u+=1;return u===s.length?y.Break:s[u].extendedRange[0]>e.range[1]?y.Skip:void 0}}),u=0,l(e,{leave:function(e){for(var t;ue.range[1]?y.Skip:void 0}}),e}var p,y,m,v,_,g;return p={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},m={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},v={},_={},g={},y={Break:v,Skip:_,Remove:g},o.prototype.replace=function(e){this.parent[this.key]=e},o.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},u.prototype.path=function(){function e(e,t){if(Array.isArray(t))for(n=0,i=t.length;n=0;)if(f=p[d],y=o[f])if(Array.isArray(y)){for(h=y.length;(h-=1)>=0;)if(y[h]){if(c(u,p[d]))i=new a(y[h],[f,h],"Property",null);else{if(!s(y[h]))continue;i=new a(y[h],[f,h],null,null)}r.push(i)}}else s(y)&&r.push(new a(y,f,null,null))}}else if(i=n.pop(),l=this.__execute(t.leave,i),this.__state===v||l===v)return},u.prototype.replace=function(e,t){function r(e){var t,r,i,o;if(e.ref.remove())for(r=e.ref.key,o=e.ref.parent,t=n.length;t--;)if(i=n[t],i.ref&&i.ref.parent===o){if(i.ref.key=0;)if(E=y[h],m=u[E])if(Array.isArray(m)){for(p=m.length;(p-=1)>=0;)if(m[p]){if(c(l,y[h]))d=new a(m[p],[E,p],"Property",new o(m,p));else{if(!s(m[p]))continue;d=new a(m[p],[E,p],null,new o(m,p))}n.push(d)}}else s(m)&&n.push(new a(m,E,null,new o(u,E)))}}else if(d=i.pop(),f=this.__execute(t.leave,d),void 0!==f&&f!==v&&f!==_&&f!==g&&d.ref.replace(f),this.__state!==g&&f!==g||r(d),this.__state===v||f===v)return w.root;return w.root},r.version=e("./package.json").version,r.Syntax=p,r.traverse=l,r.replace=f,r.attachComments=h,r.VisitorKeys=m,r.VisitorOption=y,r.Controller=u,r.cloneEnvironment=function(){return t({})},r}(r)},{"./package.json":56}],56:[function(e,t,r){t.exports={name:"estraverse",description:"ECMAScript JS AST traversal functions",homepage:"https://github.com/estools/estraverse",main:"estraverse.js",version:"4.3.0",engines:{node:">=4.0"},maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",web:"http://github.com/Constellation"}],repository:{type:"git",url:"http://github.com/estools/estraverse.git"},devDependencies:{"babel-preset-env":"^1.6.1","babel-register":"^6.3.13",chai:"^2.1.1",espree:"^1.11.0",gulp:"^3.8.10","gulp-bump":"^0.2.2","gulp-filter":"^2.0.0","gulp-git":"^1.0.1","gulp-tag-version":"^1.3.0",jshint:"^2.5.6",mocha:"^2.1.0"},license:"BSD-2-Clause",scripts:{test:"npm run-script lint && npm run-script unit-test",lint:"jshint estraverse.js","unit-test":"mocha --compilers js:babel-register"}}},{}],57:[function(e,t,r){function n(){this._array=[],this._set=a?new Map:Object.create(null)}var i=e("./util"),o=Object.prototype.hasOwnProperty,a="undefined"!=typeof Map;n.fromArray=function(e,t){for(var r=new n,i=0,o=e.length;i=0)return t}else{var r=i.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},n.prototype.at=function(e){if(e>=0&&e>1;return t?-r:r}var o=e("./base64");r.encode=function(e){var t,r="",i=n(e);do{t=31&i,i>>>=5,i>0&&(t|=32),r+=o.encode(t)}while(i>0);return r},r.decode=function(e,t,r){var n,a,u=e.length,s=0,c=0;do{if(t>=u)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(a=o.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));n=!!(32&a),a&=31,s+=a<0?t-s>1?n(s,t,i,o,a,u):u==r.LEAST_UPPER_BOUND?t1?n(e,s,i,o,a,u):u==r.LEAST_UPPER_BOUND?s:e<0?-1:e}r.GREATEST_LOWER_BOUND=1,r.LEAST_UPPER_BOUND=2,r.search=function(e,t,i,o){if(0===t.length)return-1;var a=n(-1,t.length,e,t,i,o||r.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===i(t[a],t[a-1],!0);)--a;return a}},{}],61:[function(e,t,r){function n(e,t){var r=e.generatedLine,n=t.generatedLine,i=e.generatedColumn,a=t.generatedColumn;return n>r||n==r&&a>=i||o.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var o=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){n(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(o.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},r.MappingList=i},{"./util":66}],62:[function(e,t,r){function n(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function i(e,t){return Math.round(e+Math.random()*(t-e))}function o(e,t,r,a){if(r=0){var o=this._originalMappings[i];if(void 0===e.column)for(var a=o.originalLine;o&&o.originalLine===a;)n.push({line:u.getArg(o,"generatedLine",null),column:u.getArg(o,"generatedColumn",null),lastColumn:u.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i];else for(var c=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==c;)n.push({line:u.getArg(o,"generatedLine",null),column:u.getArg(o,"generatedColumn",null),lastColumn:u.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i]}return n},r.SourceMapConsumer=n,i.prototype=Object.create(n.prototype),i.prototype.consumer=n,i.prototype._findSourceIndex=function(e){var t=e;if(null!=this.sourceRoot&&(t=u.relative(this.sourceRoot,t)),this._sources.has(t))return this._sources.indexOf(t);var r;for(r=0;r1&&(r.source=y+i[1],y+=i[1],r.originalLine=h+i[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=p+i[3],p=r.originalColumn,i.length>4&&(r.name=m+i[4],m+=i[4])),E.push(r),"number"==typeof r.originalLine&&w.push(r)}f(E,u.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,f(w,u.compareByOriginalPositions),this.__originalMappings=w},i.prototype._findMapping=function(e,t,r,n,i,o){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return s.search(e,t,i,o)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[r];if(i.generatedLine===t.generatedLine){var o=u.getArg(i,"source",null);null!==o&&(o=this._sources.at(o),o=u.computeSourceURL(this.sourceRoot,o,this._sourceMapURL));var a=u.getArg(i,"name",null);return null!==a&&(a=this._names.at(a)),{source:o,line:u.getArg(i,"originalLine",null),column:u.getArg(i,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var n=e;null!=this.sourceRoot&&(n=u.relative(this.sourceRoot,n));var i;if(null!=this.sourceRoot&&(i=u.urlParse(this.sourceRoot))){var o=n.replace(/^file:\/\//,"");if("file"==i.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!i.path||"/"==i.path)&&this._sources.has("/"+n))return this.sourcesContent[this._sources.indexOf("/"+n)]}if(t)return null;throw new Error('"'+n+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=u.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:u.getArg(e,"line"),originalColumn:u.getArg(e,"column")},i=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",u.compareByOriginalPositions,u.getArg(e,"bias",n.GREATEST_LOWER_BOUND));if(i>=0){var o=this._originalMappings[i];if(o.source===r.source)return{line:u.getArg(o,"generatedLine",null),column:u.getArg(o,"generatedColumn",null),lastColumn:u.getArg(o,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},r.BasicSourceMapConsumer=i,a.prototype=Object.create(n.prototype),a.prototype.constructor=n,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},n.prototype._serializeMappings=function(){for(var e,t,r,n,a=0,u=1,s=0,c=0,l=0,f=0,d="",h=this._mappings.toArray(),p=0,y=h.length;p0){if(!o.compareByGeneratedPositionsInflated(t,h[p-1]))continue;e+=","}e+=i.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=i.encode(n-f),f=n,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-s),s=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=i.encode(r-l),l=r)),d+=e}return d},n.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},n.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},n.prototype.toString=function(){return JSON.stringify(this.toJSON())},r.SourceMapGenerator=n},{"./array-set":57,"./base64-vlq":58,"./mapping-list":61,"./util":66}],65:[function(e,t,r){function n(e,t,r,n,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==i?null:i,this[u]=!0,null!=n&&this.add(n)}var i=e("./source-map-generator").SourceMapGenerator,o=e("./util"),a=/(\r?\n)/,u="$$$isSourceNode$$$";n.fromStringWithSourceMap=function(e,t,r){function i(e,t){if(null===e||void 0===e.source)u.add(t);else{var i=r?o.join(r,e.source):e.source;u.add(new n(e.originalLine,e.originalColumn,i,t,e.name))}}var u=new n,s=e.split(a),c=0,l=function(){function e(){return c=0;t--)this.prepend(e[t]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},n.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r0){for(t=[],r=0;r=0;l--)a=s[l],"."===a?s.splice(l,1):".."===a?c++:c>0&&(""===a?(s.splice(l+1,c),c=0):(s.splice(l,2),c--));return t=s.join("/"),""===t&&(t=u?"/":"."),n?(n.path=t,o(n)):t}function u(e,t){""===e&&(e="."),""===t&&(t=".");var r=i(t),n=i(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),o(r);if(r||t.match(b))return t;if(n&&!n.host&&!n.path)return n.host=t,o(n);var u="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=u,o(n)):u}function s(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if(e=e.slice(0,n),e.match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}function c(e){return e}function l(e){return d(e)?"$"+e:e}function f(e){return d(e)?e.slice(1):e}function d(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function h(e,t,r){var n=y(e.source,t.source);return 0!==n?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)||r?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:(n=e.generatedLine-t.generatedLine,0!==n?n:y(e.name,t.name))}function p(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)||r?n:0!==(n=y(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:(n=e.originalColumn-t.originalColumn,0!==n?n:y(e.name,t.name))}function y(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}function m(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=y(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:(r=e.originalColumn-t.originalColumn,0!==r?r:y(e.name,t.name))}function v(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function _(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=i(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var s=n.path.lastIndexOf("/");s>=0&&(n.path=n.path.substring(0,s+1))}t=u(o(n),t)}return a(t)}r.getArg=n;var g=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,b=/^data:.+\,.+$/;r.urlParse=i,r.urlGenerate=o,r.normalize=a,r.join=u,r.isAbsolute=function(e){return"/"===e.charAt(0)||g.test(e)},r.relative=s;var w=function(){return!("__proto__"in Object.create(null))}();r.toSetString=w?c:l,r.fromSetString=w?c:f,r.compareByOriginalPositions=h,r.compareByGeneratedPositionsDeflated=p,r.compareByGeneratedPositionsInflated=m,r.parseSourceMapInput=v,r.computeSourceURL=_},{}],67:[function(e,t,r){r.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,r.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,r.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":63,"./lib/source-map-generator":64,"./lib/source-node":65}],68:[function(e,t,r){t.exports={name:"escodegen",description:"ECMAScript code generator",homepage:"http://github.com/estools/escodegen",main:"escodegen.js",bin:{esgenerate:"./bin/esgenerate.js",escodegen:"./bin/escodegen.js"},files:["LICENSE.BSD","README.md","bin","escodegen.js","package.json"],version:"1.14.3",engines:{node:">=4.0"},maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",web:"http://github.com/Constellation"}],repository:{type:"git",url:"http://github.com/estools/escodegen.git"},dependencies:{estraverse:"^4.2.0",esutils:"^2.0.2",esprima:"^4.0.1",optionator:"^0.8.1"},optionalDependencies:{"source-map":"~0.6.1"},devDependencies:{acorn:"^7.1.0",bluebird:"^3.4.7","bower-registry-client":"^1.0.0",chai:"^3.5.0","commonjs-everywhere":"^0.9.7",gulp:"^3.8.10","gulp-eslint":"^3.0.1","gulp-mocha":"^3.0.1",semver:"^5.1.0"},license:"BSD-2-Clause",scripts:{test:"gulp travis","unit-test":"gulp test",lint:"gulp lint",release:"node tools/release.js","build-min":"./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",build:"./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js"}}},{}],69:[function(e,t,r){!function(){"use strict";function e(e){if(null==e)return!1;switch(e.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0}return!1}function r(e){if(null==e)return!1;switch(e.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0}return!1}function n(e){if(null==e)return!1;switch(e.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0}return!1}function i(e){return n(e)||null!=e&&"FunctionDeclaration"===e.type}function o(e){switch(e.type){case"IfStatement":return null!=e.alternate?e.alternate:e.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return e.body}return null}function a(e){var t;if("IfStatement"!==e.type)return!1;if(null==e.alternate)return!1;t=e.consequent;do{if("IfStatement"===t.type&&null==t.alternate)return!0;t=o(t)}while(t);return!1}t.exports={isExpression:e,isStatement:n,isIterationStatement:r,isSourceElement:i,isProblematicIfStatement:a,trailingStatement:o}}()},{}],70:[function(e,t,r){!function(){"use strict";function e(e){return 48<=e&&e<=57}function r(e){return 48<=e&&e<=57||97<=e&&e<=102||65<=e&&e<=70}function n(e){return e>=48&&e<=55}function i(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&h.indexOf(e)>=0}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(Math.floor((e-65536)/1024)+55296)+String.fromCharCode((e-65536)%1024+56320)}function u(e){return e<128?p[e]:d.NonAsciiIdentifierStart.test(a(e))}function s(e){return e<128?y[e]:d.NonAsciiIdentifierPart.test(a(e))}function c(e){return e<128?p[e]:f.NonAsciiIdentifierStart.test(a(e))}function l(e){return e<128?y[e]:f.NonAsciiIdentifierPart.test(a(e))}var f,d,h,p,y,m;for(d={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},f={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, -NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],p=new Array(128),m=0;m<128;++m)p[m]=m>=97&&m<=122||m>=65&&m<=90||36===m||95===m;for(y=new Array(128),m=0;m<128;++m)y[m]=m>=97&&m<=122||m>=65&&m<=90||m>=48&&m<=57||36===m||95===m;t.exports={isDecimalDigit:e,isHexDigit:r,isOctalDigit:n,isWhiteSpace:i,isLineTerminator:o,isIdentifierStartES5:u,isIdentifierPartES5:s,isIdentifierStartES6:c,isIdentifierPartES6:l}}()},{}],71:[function(e,t,r){!function(){"use strict";function r(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function n(e,t){return!(!t&&"yield"===e)&&i(e,t)}function i(e,t){if(t&&r(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function o(e,t){return"null"===e||"true"===e||"false"===e||n(e,t)}function a(e,t){return"null"===e||"true"===e||"false"===e||i(e,t)}function u(e){return"eval"===e||"arguments"===e}function s(e){var t,r,n;if(0===e.length)return!1;if(n=e.charCodeAt(0),!h.isIdentifierStartES5(n))return!1;for(t=1,r=e.length;t=r)return!1;if(!(56320<=(i=e.charCodeAt(t))&&i<=57343))return!1;n=c(n,i)}if(!o(n))return!1;o=h.isIdentifierPartES6}return!0}function f(e,t){return s(e)&&!o(e,t)}function d(e,t){return l(e)&&!a(e,t)}var h=e("./code");t.exports={isKeywordES5:n,isKeywordES6:i,isReservedWordES5:o,isReservedWordES6:a,isRestrictedWord:u,isIdentifierNameES5:s,isIdentifierNameES6:l,isIdentifierES5:f,isIdentifierES6:d}}()},{"./code":70}],72:[function(e,t,r){!function(){"use strict";r.ast=e("./ast"),r.code=e("./code"),r.keyword=e("./keyword")}()},{"./ast":69,"./code":70,"./keyword":71}],73:[function(e,t,r){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function o(e){return"number"==typeof e}function a(e){return"object"==typeof e&&null!==e}function u(e){return void 0===e}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!o(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,r,n,o,s,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(r=this._events[e],u(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:for(n=arguments.length,o=new Array(n-1),s=1;s0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())}return this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var r,n,o,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],o=r.length,n=-1,r===t||i(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(r)){for(u=o;u-- >0;)if(r[u]===t||r[u].listener&&r[u].listener===t){n=u;break}if(n<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],i(r))this.removeListener(e,r);else for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.listenerCount=function(e,t){return e._events&&e._events[t]?i(e._events[t])?1:e._events[t].length:0}},{}],74:[function(e,t,r){"use strict";t.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(i=n;0!=i--;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),(n=o.length)!==Object.keys(r).length)return!1;for(i=n;0!=i--;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;0!=i--;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}},{}],75:[function(e,t,r){"use strict";t.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r="boolean"==typeof t.cycles&&t.cycles,n=t.cmp&&function(e){return function(t){return function(r,n){var i={key:r,value:t[r]},o={key:n,value:t[n]};return e(i,o)}}}(t.cmp),i=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var o,a;if(Array.isArray(t)){for(a="[",o=0;ot)return-1;for(var r=0,n=e.length;r0;e>>=8)t.push(255&e);0==t.length&&t.push(0);for(var r=this.decodeTables[0],n=t.length-1;n>0;n--){var i=r[t[n]];if(i==s)r[t[n]]=l-this.decodeTables.length,this.decodeTables.push(r=f.slice(0));else{if(!(i<=l))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+e.toString(16));r=this.decodeTables[l-i]}}return r},n.prototype._addDecodeChunk=function(e){var t=parseInt(e[0],16),r=this._getDecodeTrieNode(t);t&=255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+e[0]+": too long"+t)},n.prototype._getEncodeBucket=function(e){var t=e>>8;return void 0===this.encodeTable[t]&&(this.encodeTable[t]=f.slice(0)),this.encodeTable[t]},n.prototype._setEncodeChar=function(e,t){var r=this._getEncodeBucket(e),n=255&e;r[n]<=-10?this.encodeTableSeq[-10-r[n]][-1]=t:r[n]==s&&(r[n]=t)},n.prototype._setEncodeSequence=function(e,t){var r,n=e[0],i=this._getEncodeBucket(n),o=255&n;i[o]<=-10?r=this.encodeTableSeq[-10-i[o]]:(r={},i[o]!==s&&(r[-1]=i[o]),i[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(r));for(var a=1;a=0?this._setEncodeChar(o,a):o<=l?this._fillEncodeTable(l-o,a<<8,r):o<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-o],a))}},i.prototype.write=function(e){for(var t=u.alloc(e.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,o=0,c=0;;){if(-1===i){if(o==e.length)break;var l=e.charCodeAt(o++)}else{var l=i;i=-1}if(55296<=l&&l<57344)if(l<56320){if(-1===r){r=l;continue}r=l,l=s}else-1!==r?(l=65536+1024*(r-55296)+(l-56320),r=-1):l=s;else-1!==r&&(i=l,l=s,r=-1);var f=s;if(void 0!==n&&l!=s){var d=n[l];if("object"==typeof d){n=d;continue}"number"==typeof d?f=d:void 0==d&&void 0!==(d=n[-1])&&(f=d,i=l),n=void 0}else if(l>=0){var h=this.encodeTable[l>>8];if(void 0!==h&&(f=h[255&l]),f<=-10){n=this.encodeTableSeq[-10-f];continue}if(f==s&&this.gb18030){var p=a(this.gb18030.uChars,l);if(-1!=p){var f=this.gb18030.gbChars[p]+(l-this.gb18030.uChars[p]);t[c++]=129+Math.floor(f/12600),f%=12600,t[c++]=48+Math.floor(f/1260),f%=1260,t[c++]=129+Math.floor(f/10),f%=10,t[c++]=48+f;continue}}}f===s&&(f=this.defaultCharSingleByte),f<256?t[c++]=f:f<65536?(t[c++]=f>>8,t[c++]=255&f):(t[c++]=f>>16,t[c++]=f>>8&255,t[c++]=255&f)}return this.seqObj=n,this.leadSurrogate=r,t.slice(0,c)},i.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var e=u.alloc(10),t=0;if(this.seqObj){var r=this.seqObj[-1];void 0!==r&&(r<256?e[t++]=r:(e[t++]=r>>8,e[t++]=255&r)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(e[t++]=this.defaultCharSingleByte,this.leadSurrogate=-1),e.slice(0,t)}},i.prototype.findIdx=a,o.prototype.write=function(e){var t,r=u.alloc(2*e.length),n=this.nodeIdx,i=this.prevBuf,o=this.prevBuf.length,f=-this.prevBuf.length;o>0&&(i=u.concat([i,e.slice(0,10)]));for(var d=0,h=0;d=0?e[d]:i[d+o],t=this.decodeTables[n][p];if(t>=0);else if(t===s)d=f,t=this.defaultCharUnicode.charCodeAt(0);else if(t===c){var y=f>=0?e.slice(f,d+1):i.slice(f+o,d+1+o),m=12600*(y[0]-129)+1260*(y[1]-48)+10*(y[2]-129)+(y[3]-48),v=a(this.gb18030.gbChars,m);t=this.gb18030.uChars[v]+m-this.gb18030.gbChars[v]}else{if(t<=l){n=l-t;continue}if(!(t<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+t+" at "+n+"/"+p);for(var _=this.decodeTableSeq[-10-t],g=0;g<_.length-1;g++)t=_[g],r[h++]=255&t,r[h++]=t>>8;t=_[_.length-1]}if(t>65535){t-=65536;var b=55296+Math.floor(t/1024);r[h++]=255&b,r[h++]=b>>8,t=56320+t%1024}r[h++]=255&t,r[h++]=t>>8,n=0,f=d+1}return this.nodeIdx=n,this.prevBuf=f>=0?e.slice(f):i.slice(f+o),r.slice(0,h).toString("ucs2")},o.prototype.end=function(){for(var e="";this.prevBuf.length>0;){e+=this.defaultCharUnicode;var t=this.prevBuf.slice(1);this.prevBuf=u.alloc(0),this.nodeIdx=0,t.length>0&&(e+=this.write(t))}return this.nodeIdx=0,e}},{"safer-buffer":118}],78:[function(e,t,r){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return e("./tables/shiftjis.json")},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return e("./tables/eucjp.json")},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return e("./tables/cp936.json")}},gbk:{type:"_dbcs",table:function(){return e("./tables/cp936.json").concat(e("./tables/gbk-added.json"))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return e("./tables/cp936.json").concat(e("./tables/gbk-added.json"))},gb18030:function(){return e("./tables/gb18030-ranges.json")},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return e("./tables/cp949.json")}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return e("./tables/cp950.json")}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return e("./tables/cp950.json").concat(e("./tables/big5-added.json"))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},{"./tables/big5-added.json":84,"./tables/cp936.json":85,"./tables/cp949.json":86,"./tables/cp950.json":87,"./tables/eucjp.json":88,"./tables/gb18030-ranges.json":89,"./tables/gbk-added.json":90,"./tables/shiftjis.json":91}],79:[function(e,t,r){"use strict";for(var n=[e("./internal"),e("./utf16"),e("./utf7"),e("./sbcs-codec"),e("./sbcs-data"),e("./sbcs-data-generated"),e("./dbcs-codec"),e("./dbcs-data")],i=0;i>>6),t[r++]=128+(63&i)):(t[r++]=224+(i>>>12),t[r++]=128+(i>>>6&63),t[r++]=128+(63&i))}return t.slice(0,r)},u.prototype.end=function(){},s.prototype.write=function(e){for(var t=this.acc,r=this.contBytes,n=this.accBytes,i="",o=0;o0&&(i+=this.defaultCharUnicode,r=0),a<128?i+=String.fromCharCode(a):a<224?(t=31&a,r=1,n=1):a<240?(t=15&a,r=2,n=1):i+=this.defaultCharUnicode):r>0?(t=t<<6|63&a,r--,n++,0===r&&(i+=2===n&&t<128&&t>0?this.defaultCharUnicode:3===n&&t<2048?this.defaultCharUnicode:String.fromCharCode(t))):i+=this.defaultCharUnicode}return this.acc=t,this.contBytes=r,this.accBytes=n,i},s.prototype.end=function(){var e=0;return this.contBytes>0&&(e+=this.defaultCharUnicode),e}},{"safer-buffer":118,string_decoder:51}],81:[function(e,t,r){"use strict";function n(e,t){if(!e)throw new Error("SBCS codec is called without the data.");if(!e.chars||128!==e.chars.length&&256!==e.chars.length)throw new Error("Encoding '"+e.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===e.chars.length){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);e.chars=r+e.chars}this.decodeBuf=a.from(e.chars,"ucs2");for(var i=a.alloc(65536,t.defaultCharSingleByte.charCodeAt(0)),n=0;n?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},{}],83:[function(e,t,r){"use strict";t.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},mik:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",10000:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},{}],84:[function(e,t,r){t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},{}],85:[function(e,t,r){ -t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},{}],86:[function(e,t,r){ -t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆЪĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},{}],87:[function(e,t,r){ -t.exports=[["0","\0",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},{}],88:[function(e,t,r){t.exports=[["0","\0",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},{}],89:[function(e,t,r){t.exports={ -uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},{}],90:[function(e,t,r){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},{}],91:[function(e,t,r){t.exports=[["0","\0",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},{}],92:[function(e,t,r){"use strict";function n(){}function i(){}function o(){this.overflowByte=-1}function a(e,t){this.iconv=t}function u(e,t){e=e||{},void 0===e.addBOM&&(e.addBOM=!0),this.encoder=t.iconv.getEncoder("utf-16le",e)}function s(e,t){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=e||{},this.iconv=t.iconv}function c(e,t){var r=t||"utf-16le";if(e.length>=2)if(254==e[0]&&255==e[1])r="utf-16be";else if(255==e[0]&&254==e[1])r="utf-16le";else{for(var n=0,i=0,o=Math.min(e.length-e.length%2,64),a=0;an?r="utf-16be":i0&&(e=this.iconv.decode(c.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e},r.utf7imap=a,a.prototype.encoder=u,a.prototype.decoder=s,a.prototype.bomAware=!0,u.prototype.write=function(e){for(var t=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=c.alloc(5*e.length+10),o=0,a=0;a0&&(o+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),o),n=0),i[o++]=y,t=!1),t||(i[o++]=u,u===m&&(i[o++]=y))):(t||(i[o++]=m,t=!0),t&&(r[n++]=u>>8,r[n++]=255&u,n==r.length&&(o+=i.write(r.toString("base64").replace(/\//g,","),o),n=0)))}return this.inBase64=t,this.base64AccumIdx=n,i.slice(0,o)},u.prototype.end=function(){var e=c.alloc(10),t=0;return this.inBase64&&(this.base64AccumIdx>0&&(t+=e.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),t),this.base64AccumIdx=0),e[t++]=y,this.inBase64=!1),e.slice(0,t)};var v=d.slice();v[",".charCodeAt(0)]=!0,s.prototype.write=function(e){for(var t="",r=0,n=this.inBase64,i=this.base64Accum,o=0;o0&&(e=this.iconv.decode(c.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e}},{"safer-buffer":118}],94:[function(e,t,r){"use strict";function n(e,t){this.encoder=e,this.addBOM=!0}function i(e,t){this.decoder=e,this.pass=!1,this.options=t||{}}r.PrependBOM=n,n.prototype.write=function(e){return this.addBOM&&(e="\ufeff"+e,this.addBOM=!1),this.encoder.write(e)},n.prototype.end=function(){return this.encoder.end()},r.StripBOM=i,i.prototype.write=function(e){var t=this.decoder.write(e);return this.pass||!t?t:("\ufeff"===t[0]&&(t=t.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,t)},i.prototype.end=function(){return this.decoder.end()}},{}],95:[function(e,t,r){"use strict";var n=e("buffer").Buffer;t.exports=function(t){var r=void 0;t.supportsNodeEncodingsExtension=!(n.from||new n(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!r){if(r={},!t.supportsNodeEncodingsExtension)return console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),void console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};n.isNativeEncoding=function(e){return e&&i[e.toLowerCase()]};var o=e("buffer").SlowBuffer;if(r.SlowBufferToString=o.prototype.toString,o.prototype.toString=function(e,i,o){return e=String(e||"utf8").toLowerCase(),n.isNativeEncoding(e)?r.SlowBufferToString.call(this,e,i,o):(void 0===i&&(i=0),void 0===o&&(o=this.length),t.decode(this.slice(i,o),e))},r.SlowBufferWrite=o.prototype.write,o.prototype.write=function(e,i,o,a){if(isFinite(i))isFinite(o)||(a=o,o=void 0);else{var u=a;a=i,i=o,o=u}i=+i||0;var s=this.length-i;if(o?(o=+o)>s&&(o=s):o=s,a=String(a||"utf8").toLowerCase(),n.isNativeEncoding(a))return r.SlowBufferWrite.call(this,e,i,o,a);if(e.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var c=t.encode(e,a);return c.lengthf&&(o=f):o=f,e.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var d=t.encode(e,a);return d.length0?n.concat([a,u]):a},o.decode=function(e,t,r){"string"==typeof e&&(o.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),o.skipDecodeWarning=!0),e=n.from(""+(e||""),"binary"));var i=o.getDecoder(t,r),a=i.write(e),u=i.end();return u?a+u:a},o.encodingExists=function(e){try{return o.getCodec(e),!0}catch(e){return!1}},o.toEncoding=o.encode,o.fromEncoding=o.decode,o._codecDataCache={},o.getCodec=function(t){o.encodings||(o.encodings=e("../encodings"));for(var r=o._canonicalizeEncoding(t),n={};;){var i=o._codecDataCache[r];if(i)return i;var a=o.encodings[r];switch(typeof a){case"string":r=a;break;case"object":for(var u in a)n[u]=a[u];n.encodingName||(n.encodingName=r),r=a.type;break;case"function":return n.encodingName||(n.encodingName=r),i=new a(n,o),o._codecDataCache[n.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+r+"')")}}},o._canonicalizeEncoding=function(e){return(""+e).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},o.getEncoder=function(e,t){var r=o.getCodec(e),n=new r.encoder(t,r);return r.bomAware&&t&&t.addBOM&&(n=new i.PrependBOM(n,t)),n},o.getDecoder=function(e,t){var r=o.getCodec(e),n=new r.decoder(t,r);return!r.bomAware||t&&!1===t.stripBOM||(n=new i.StripBOM(n,t)),n};var a=void 0!==r&&r.versions&&r.versions.node;if(a){var u=a.split(".").map(Number);(u[0]>0||u[1]>=10)&&e("./streams")(o),e("./extend-node")(o)}}).call(this,e("FWaASH"))},{"../encodings":79,"./bom-handling":94,"./extend-node":95,"./streams":97,FWaASH:50,"safer-buffer":118}],97:[function(e,t,r){"use strict";function n(e,t){this.conv=e,t=t||{},t.decodeStrings=!1,a.call(this,t)}function i(e,t){this.conv=e,t=t||{},t.encoding=this.encoding="utf8",a.call(this,t)}var o=e("buffer").Buffer,a=e("stream").Transform;t.exports=function(e){e.encodeStream=function(t,r){return new n(e.getEncoder(t,r),r)},e.decodeStream=function(t,r){return new i(e.getDecoder(t,r),r)},e.supportsStreams=!0,e.IconvLiteEncoderStream=n,e.IconvLiteDecoderStream=i,e._collect=i.prototype.collect},n.prototype=Object.create(a.prototype,{constructor:{value:n}}),n.prototype._transform=function(e,t,r){if("string"!=typeof e)return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(e);n&&n.length&&this.push(n),r()}catch(e){r(e)}},n.prototype._flush=function(e){try{var t=this.conv.end();t&&t.length&&this.push(t),e()}catch(t){e(t)}},n.prototype.collect=function(e){var t=[];return this.on("error",e),this.on("data",function(e){t.push(e)}),this.on("end",function(){e(null,o.concat(t))}),this},i.prototype=Object.create(a.prototype,{constructor:{value:i}}),i.prototype._transform=function(e,t,r){if(!o.isBuffer(e))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(e);n&&n.length&&this.push(n,this.encoding),r()}catch(e){r(e)}},i.prototype._flush=function(e){try{var t=this.conv.end();t&&t.length&&this.push(t,this.encoding),e()}catch(t){e(t)}},i.prototype.collect=function(e){var t="";return this.on("error",e),this.on("data",function(e){t+=e}),this.on("end",function(){e(null,t)}),this}},{buffer:52,stream:121}],98:[function(e,t,r){r.read=function(e,t,r,n,i){var o,a,u=8*i-n-1,s=(1<>1,l=-7,f=r?i-1:0,d=r?-1:1,h=e[t+f];for(f+=d,o=h&(1<<-l)-1,h>>=-l,l+=u;l>0;o=256*o+e[t+f],f+=d,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+f],f+=d,l-=8);if(0===o)o=1-c;else{if(o===s)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,n),o-=c}return(h?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,u,s,c=8*o-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:o-1,p=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),t+=a+f>=1?d/s:d*Math.pow(2,1-f),t*s>=2&&(a++,s/=2),a+f>=l?(u=0,a=l):a+f>=1?(u=(t*s-1)*Math.pow(2,i),a+=f):(u=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+h]=255&u,h+=p,u/=256,i-=8);for(a=a<0;e[r+h]=255&a,h+=p,a/=256,c-=8);e[r+h-p]|=128*y}},{}],99:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],100:[function(e,t,r){t.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},{}],101:[function(e,t,r){"use strict";function n(e,t,r,a,u,s,c,l,f,d){if(a&&"object"==typeof a&&!Array.isArray(a)){t(a,u,s,c,l,f,d);for(var h in a){var p=a[h];if(Array.isArray(p)){if(h in o.arrayKeywords)for(var y=0;y=48&&e<=57}function n(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function i(e){return"01234567".indexOf(e)>=0}function o(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function a(e){return 10===e||13===e||8232===e||8233===e}function u(e){return 64==e||36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&it.NonAsciiIdentifierStart.test(String.fromCharCode(e))}function s(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&it.NonAsciiIdentifierPart.test(String.fromCharCode(e))}function c(e){switch(e){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function l(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function f(e){return"eval"===e||"arguments"===e}function d(e){if(ut&&l(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function h(e,r,n,i,o){var a;t("number"==typeof n,"Comment must have valid position"),pt.lastCommentStart>=n||(pt.lastCommentStart=n,a={type:e,value:r},yt.range&&(a.range=[n,i]),yt.loc&&(a.loc=o),yt.comments.push(a),yt.attachComment&&(yt.leadingComments.push(a),yt.trailingComments.push(a)))}function p(e){var t,r,n,i;for(t=st-e,r={start:{line:ct,column:st-lt-e}};st=ft&&L({},nt.UnexpectedToken,"ILLEGAL");else if(42===r){if(47===at.charCodeAt(st+1))return++st,++st,void(yt.comments&&(n=at.slice(e+2,st-2),t.end={line:ct,column:st-lt},h("Block",n,e,st,t)));++st}else++st;L({},nt.UnexpectedToken,"ILLEGAL")}function m(){var e,t;for(t=0===st;st>>="===(n=at.substr(st,4))?(st+=4,{type:Xe.Punctuator,value:n,lineNumber:ct,lineStart:lt,start:i,end:st}):">>>"===(r=n.substr(0,3))||"<<="===r||">>="===r?(st+=3,{type:Xe.Punctuator,value:r,lineNumber:ct,lineStart:lt,start:i,end:st}):(t=r.substr(0,2),a===t[1]&&"+-<>&|".indexOf(a)>=0||"=>"===t?(st+=2,{type:Xe.Punctuator,value:t,lineNumber:ct,lineStart:lt,start:i,end:st}):"<>=!+-*%&|^/".indexOf(a)>=0?(++st,{type:Xe.Punctuator,value:a,lineNumber:ct,lineStart:lt,start:i,end:st}):void L({},nt.UnexpectedToken,"ILLEGAL"))}function E(e){for(var t="";st=0&&st0&&(n=yt.tokens[yt.tokens.length-1],n.range[0]===e&&"Punctuator"===n.type&&("/"!==n.value&&"/="!==n.value||yt.tokens.pop())),yt.tokens.push({type:"RegularExpression",value:r.literal,range:[e,st],loc:t})),r}function F(e){return e.type===Xe.Identifier||e.type===Xe.Keyword||e.type===Xe.BooleanLiteral||e.type===Xe.NullLiteral}function j(){var e,t;if(!(e=yt.tokens[yt.tokens.length-1]))return T();if("Punctuator"===e.type){if("]"===e.value)return w();if(")"===e.value)return t=yt.tokens[yt.openParenToken-1],!t||"Keyword"!==t.type||"if"!==t.value&&"while"!==t.value&&"for"!==t.value&&"with"!==t.value?w():T();if("}"===e.value){if(yt.tokens[yt.openCurlyToken-3]&&"Keyword"===yt.tokens[yt.openCurlyToken-3].type){if(!(t=yt.tokens[yt.openCurlyToken-4]))return w()}else{if(!yt.tokens[yt.openCurlyToken-4]||"Keyword"!==yt.tokens[yt.openCurlyToken-4].type)return w();if(!(t=yt.tokens[yt.openCurlyToken-5]))return T()}return et.indexOf(t.value)>=0?w():T()}return T()}return"Keyword"===e.type?T():w()}function x(){var e;return m(),st>=ft?{type:Xe.EOF,lineNumber:ct,lineStart:lt,start:st,end:st}:(e=at.charCodeAt(st),u(e)?b():40===e||41===e||59===e?w():39===e||34===e?S():46===e?r(at.charCodeAt(st+1))?O():w():r(e)?O():yt.tokenize&&47===e?j():w())}function B(){var e,t,r;return m(),e={start:{line:ct,column:st-lt}},t=x(),e.end={line:ct,column:st-lt},t.type!==Xe.EOF&&(r=at.slice(t.start,t.end),yt.tokens.push({type:Ze[t.type],value:r,range:[t.start,t.end],loc:e})),t}function M(){var e;return e=ht,st=e.end,ct=e.lineNumber,lt=e.lineStart,ht=void 0!==yt.tokens?B():x(),st=e.end,ct=e.lineNumber,lt=e.lineStart,e}function R(){var e,t,r;e=st,t=ct,r=lt,ht=void 0!==yt.tokens?B():x(),st=e,ct=t,lt=r}function I(e,t){this.line=e,this.column=t}function N(e,t,r,n){this.start=new I(e,t),this.end=new I(r,n)}function U(){var e,t,r,n;return e=st,t=ct,r=lt,m(),n=ct!==t,st=e,ct=t,lt=r,n}function L(e,r){var n,i=Array.prototype.slice.call(arguments,2),o=r.replace(/%(\d)/g,function(e,r){return t(r>="===e||">>>="===e||"&="===e||"^="===e||"|="===e)}function $(){var e;if(59===at.charCodeAt(st)||H(";"))return void M();e=ct,m(),ct===e&&(ht.type===Xe.EOF||H("}")||G(ht))}function K(e){return e.type===tt.Identifier||e.type===tt.MemberExpression}function J(){var e,t=[];for(e=ht,q("[");!H("]");)H(",")?(M(),t.push(null)):(t.push(ye()),H("]")||q(","));return M(),dt.markEnd(dt.createArrayExpression(t),e)}function Q(e,t){var r,n,i;return r=ut,i=ht,n=Ge(),t&&ut&&f(e[0].name)&&z(t,nt.StrictParamName),ut=r,dt.markEnd(dt.createFunctionExpression(null,e,[],n),i)}function X(){var e,t;return t=ht,e=M(),e.type===Xe.StringLiteral||e.type===Xe.NumericLiteral?(ut&&e.octal&&z(e,nt.StrictOctalLiteral),dt.markEnd(dt.createLiteral(e),t)):dt.markEnd(dt.createIdentifier(e.value),t)}function Z(){var e,t,r,n,i,o;return e=ht,o=ht,e.type===Xe.Identifier?(r=X(),"get"!==e.value||H(":")?"set"!==e.value||H(":")?(q(":"),n=ye(),dt.markEnd(dt.createProperty("init",r,n),o)):(t=X(),q("("),e=ht,e.type!==Xe.Identifier?(q(")"),z(e,nt.UnexpectedToken,e.value),n=Q([])):(i=[ge()],q(")"),n=Q(i,e)),dt.markEnd(dt.createProperty("set",t,n),o)):(t=X(),q("("),q(")"),n=Q([]),dt.markEnd(dt.createProperty("get",t,n),o))):e.type!==Xe.EOF&&e.type!==Xe.Punctuator?(t=X(),q(":"),n=ye(),dt.markEnd(dt.createProperty("init",t,n),o)):void G(e)}function ee(){var e,t,r,n,i,o=[],a={},u=String;for(i=ht,q("{");!H("}");)e=Z(),t=e.key.type===tt.Identifier?e.key.name:u(e.key.value),n="init"===e.kind?rt.Data:"get"===e.kind?rt.Get:rt.Set,r="$"+t,Object.prototype.hasOwnProperty.call(a,r)?(a[r]===rt.Data?ut&&n===rt.Data?z({},nt.StrictDuplicateProperty):n!==rt.Data&&z({},nt.AccessorDataProperty):n===rt.Data?z({},nt.AccessorDataProperty):a[r]&n&&z({},nt.AccessorGetSet),a[r]|=n):a[r]=n,o.push(e),H("}")||q(",");return q("}"),dt.markEnd(dt.createObjectExpression(o),i)}function te(){var e;return q("("),e=me(),q(")"),e}function re(){var e,t,r,n;if(H("("))return te();if(H("["))return J();if(H("{"))return ee();if(e=ht.type,n=ht,e===Xe.Identifier)r=dt.createIdentifier(M().value);else if(e===Xe.StringLiteral||e===Xe.NumericLiteral)ut&&ht.octal&&z(ht,nt.StrictOctalLiteral),r=dt.createLiteral(M());else if(e===Xe.Keyword){if(W("function"))return He();W("this")?(M(),r=dt.createThisExpression()):G(M())}else e===Xe.BooleanLiteral?(t=M(),t.value="true"===t.value,r=dt.createLiteral(t)):e===Xe.NullLiteral?(t=M(),t.value=null,r=dt.createLiteral(t)):H("/")||H("/=")?(r=void 0!==yt.tokens?dt.createLiteral(T()):dt.createLiteral(k()),R()):G(M());return dt.markEnd(r,n)}function ne(){var e=[];if(q("("),!H(")"))for(;st":case"<=":case">=":case"instanceof":r=7;break;case"in":r=t?7:0;break;case"<<":case">>":case">>>":r=8;break;case"+":case"-":r=9;break;case"*":case"/":case"%":r=11}return r}function he(){var e,t,r,n,i,o,a,u,s,c;if(e=ht,s=fe(),n=ht,0===(i=de(n,pt.allowIn)))return s;for(n.prec=i,M(),t=[e,ht],a=fe(),o=[s,n,a];(i=de(ht,pt.allowIn))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),u=o.pop().value,s=o.pop(),r=dt.createBinaryExpression(u,s,a),t.pop(),e=t[t.length-1],dt.markEnd(r,e),o.push(r);n=M(),n.prec=i,o.push(n),t.push(ht),r=fe(),o.push(r)}for(c=o.length-1,r=o[c],t.pop();c>1;)r=dt.createBinaryExpression(o[c-1].value,o[c-2],r),c-=2,e=t.pop(),dt.markEnd(r,e);return r}function pe(){var e,t,r,n,i;return i=ht,e=he(),H("?")&&(M(),t=pt.allowIn,pt.allowIn=!0,r=ye(),pt.allowIn=t,q(":"),n=ye(),e=dt.createConditionalExpression(e,r,n),dt.markEnd(e,i)),e}function ye(){var e,t,r,n,i;return e=ht,i=ht,n=t=pe(),Y()&&(K(t)||z({},nt.InvalidLHSInAssignment),ut&&t.type===tt.Identifier&&f(t.name)&&z(e,nt.StrictLHSAssignment),e=M(),r=ye(),n=dt.markEnd(dt.createAssignmentExpression(e.value,t,r),i)),n}function me(){var e,t=ht;if(e=ye(),H(",")){for(e=dt.createSequenceExpression([e]);st0?1:0,lt=0,ft=at.length,ht=null,pt={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},yt={},t=t||{},t.tokens=!0,yt.tokens=[],yt.tokenize=!0,yt.openParenToken=-1,yt.openCurlyToken=-1,yt.range="boolean"==typeof t.range&&t.range,yt.loc="boolean"==typeof t.loc&&t.loc,"boolean"==typeof t.comment&&t.comment&&(yt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(yt.errors=[]);try{if(R(),ht.type===Xe.EOF)return yt.tokens;for(M();ht.type!==Xe.EOF;)try{M()}catch(e){if(ht,yt.errors){yt.errors.push(e);break}throw e}Ke(),n=yt.tokens,void 0!==yt.comments&&(n.comments=yt.comments),void 0!==yt.errors&&(n.errors=yt.errors)}catch(e){throw e}finally{yt={}}return n}function Qe(e,t){var r,n;n=String,"string"==typeof e||e instanceof String||(e=n(e)),dt=ot,at=e,st=0,ct=at.length>0?1:0,lt=0,ft=at.length,ht=null,pt={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},yt={},void 0!==t&&(yt.range="boolean"==typeof t.range&&t.range,yt.loc="boolean"==typeof t.loc&&t.loc,yt.attachComment="boolean"==typeof t.attachComment&&t.attachComment,yt.loc&&null!==t.source&&void 0!==t.source&&(yt.source=n(t.source)),"boolean"==typeof t.tokens&&t.tokens&&(yt.tokens=[]),"boolean"==typeof t.comment&&t.comment&&(yt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(yt.errors=[]),yt.attachComment&&(yt.range=!0,yt.comments=[],yt.bottomRightStack=[],yt.trailingComments=[],yt.leadingComments=[]));try{r=$e(),void 0!==yt.comments&&(r.comments=yt.comments),void 0!==yt.tokens&&(Ke(),r.tokens=yt.tokens),void 0!==yt.errors&&(r.errors=yt.errors)}catch(e){throw e}finally{yt={}}return r}var Xe,Ze,et,tt,rt,nt,it,ot,at,ut,st,ct,lt,ft,dt,ht,pt,yt;Xe={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},Ze={},Ze[Xe.BooleanLiteral]="Boolean",Ze[Xe.EOF]="",Ze[Xe.Identifier]="Identifier",Ze[Xe.Keyword]="Keyword",Ze[Xe.NullLiteral]="Null",Ze[Xe.NumericLiteral]="Numeric",Ze[Xe.Punctuator]="Punctuator",Ze[Xe.StringLiteral]="String",Ze[Xe.RegularExpression]="RegularExpression",et=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],tt={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},rt={Data:1,Get:2,Set:4},nt={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},it={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},ot={name:"SyntaxTree",processComment:function(e){var t,r;if(!(e.type===tt.Program&&e.body.length>0)){for(yt.trailingComments.length>0?yt.trailingComments[0].range[0]>=e.range[1]?(r=yt.trailingComments,yt.trailingComments=[]):yt.trailingComments.length=0:yt.bottomRightStack.length>0&&yt.bottomRightStack[yt.bottomRightStack.length-1].trailingComments&&yt.bottomRightStack[yt.bottomRightStack.length-1].trailingComments[0].range[0]>=e.range[1]&&(r=yt.bottomRightStack[yt.bottomRightStack.length-1].trailingComments,delete yt.bottomRightStack[yt.bottomRightStack.length-1].trailingComments);yt.bottomRightStack.length>0&&yt.bottomRightStack[yt.bottomRightStack.length-1].range[0]>=e.range[0];)t=yt.bottomRightStack.pop();t?t.leadingComments&&t.leadingComments[t.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=t.leadingComments,delete t.leadingComments):yt.leadingComments.length>0&&yt.leadingComments[yt.leadingComments.length-1].range[1]<=e.range[0]&&(e.leadingComments=yt.leadingComments,yt.leadingComments=[]),r&&(e.trailingComments=r),yt.bottomRightStack.push(e)}},markEnd:function(e,t){return yt.range&&(e.range=[t.start,st]),yt.loc&&(e.loc=new N(void 0===t.startLineNumber?t.lineNumber:t.startLineNumber,t.start-(void 0===t.startLineStart?t.lineStart:t.startLineStart),ct,st-lt),this.postProcess(e)),yt.attachComment&&this.processComment(e),e},postProcess:function(e){return yt.source&&(e.loc.source=yt.source),e},createArrayExpression:function(e){return{type:tt.ArrayExpression,elements:e}},createAssignmentExpression:function(e,t,r){return{type:tt.AssignmentExpression,operator:e,left:t,right:r}},createBinaryExpression:function(e,t,r){return{type:"||"===e||"&&"===e?tt.LogicalExpression:tt.BinaryExpression,operator:e,left:t,right:r}},createBlockStatement:function(e){return{type:tt.BlockStatement,body:e}},createBreakStatement:function(e){return{type:tt.BreakStatement,label:e}},createCallExpression:function(e,t){return{type:tt.CallExpression,callee:e,arguments:t}},createCatchClause:function(e,t){return{type:tt.CatchClause,param:e,body:t}},createConditionalExpression:function(e,t,r){return{type:tt.ConditionalExpression,test:e,consequent:t,alternate:r}},createContinueStatement:function(e){return{type:tt.ContinueStatement,label:e}},createDebuggerStatement:function(){return{type:tt.DebuggerStatement}},createDoWhileStatement:function(e,t){return{type:tt.DoWhileStatement,body:e,test:t}},createEmptyStatement:function(){return{type:tt.EmptyStatement}},createExpressionStatement:function(e){return{type:tt.ExpressionStatement,expression:e}},createForStatement:function(e,t,r,n){return{type:tt.ForStatement,init:e,test:t, -update:r,body:n}},createForInStatement:function(e,t,r){return{type:tt.ForInStatement,left:e,right:t,body:r,each:!1}},createFunctionDeclaration:function(e,t,r,n){return{type:tt.FunctionDeclaration,id:e,params:t,defaults:r,body:n,rest:null,generator:!1,expression:!1}},createFunctionExpression:function(e,t,r,n){return{type:tt.FunctionExpression,id:e,params:t,defaults:r,body:n,rest:null,generator:!1,expression:!1}},createIdentifier:function(e){return{type:tt.Identifier,name:e}},createIfStatement:function(e,t,r){return{type:tt.IfStatement,test:e,consequent:t,alternate:r}},createLabeledStatement:function(e,t){return{type:tt.LabeledStatement,label:e,body:t}},createLiteral:function(e){return{type:tt.Literal,value:e.value,raw:at.slice(e.start,e.end)}},createMemberExpression:function(e,t,r){return{type:tt.MemberExpression,computed:"["===e,object:t,property:r}},createNewExpression:function(e,t){return{type:tt.NewExpression,callee:e,arguments:t}},createObjectExpression:function(e){return{type:tt.ObjectExpression,properties:e}},createPostfixExpression:function(e,t){return{type:tt.UpdateExpression,operator:e,argument:t,prefix:!1}},createProgram:function(e){return{type:tt.Program,body:e}},createProperty:function(e,t,r){return{type:tt.Property,key:t,value:r,kind:e}},createReturnStatement:function(e){return{type:tt.ReturnStatement,argument:e}},createSequenceExpression:function(e){return{type:tt.SequenceExpression,expressions:e}},createSwitchCase:function(e,t){return{type:tt.SwitchCase,test:e,consequent:t}},createSwitchStatement:function(e,t){return{type:tt.SwitchStatement,discriminant:e,cases:t}},createThisExpression:function(){return{type:tt.ThisExpression}},createThrowStatement:function(e){return{type:tt.ThrowStatement,argument:e}},createTryStatement:function(e,t,r,n){return{type:tt.TryStatement,block:e,guardedHandlers:t,handlers:r,finalizer:n}},createUnaryExpression:function(e,t){return"++"===e||"--"===e?{type:tt.UpdateExpression,operator:e,argument:t,prefix:!0}:{type:tt.UnaryExpression,operator:e,argument:t,prefix:!0}},createVariableDeclaration:function(e,t){return{type:tt.VariableDeclaration,declarations:e,kind:t}},createVariableDeclarator:function(e,t){return{type:tt.VariableDeclarator,id:e,init:t}},createWhileStatement:function(e,t){return{type:tt.WhileStatement,test:e,body:t}},createWithStatement:function(e,t){return{type:tt.WithStatement,object:e,body:t}}},e.version="1.2.2",e.tokenize=Je,e.parse=Qe,e.Syntax=function(){var e,t={};"function"==typeof Object.create&&(t=Object.create(null));for(e in tt)tt.hasOwnProperty(e)&&(t[e]=tt[e]);return"function"==typeof Object.freeze&&Object.freeze(t),t}()})},{}],103:[function(e,t,r){(function(n){var i=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,JSON_PATH:3,DOLLAR:4,PATH_COMPONENTS:5,LEADING_CHILD_MEMBER_EXPRESSION:6,PATH_COMPONENT:7,MEMBER_COMPONENT:8,SUBSCRIPT_COMPONENT:9,CHILD_MEMBER_COMPONENT:10,DESCENDANT_MEMBER_COMPONENT:11,DOT:12,MEMBER_EXPRESSION:13,DOT_DOT:14,STAR:15,IDENTIFIER:16,SCRIPT_EXPRESSION:17,INTEGER:18,END:19,CHILD_SUBSCRIPT_COMPONENT:20,DESCENDANT_SUBSCRIPT_COMPONENT:21,"[":22,SUBSCRIPT:23,"]":24,SUBSCRIPT_EXPRESSION:25,SUBSCRIPT_EXPRESSION_LIST:26,SUBSCRIPT_EXPRESSION_LISTABLE:27,",":28,STRING_LITERAL:29,ARRAY_SLICE:30,FILTER_EXPRESSION:31,QQ_STRING:32,Q_STRING:33,$accept:0,$end:1},terminals_:{2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"},productions_:[0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]],performAction:function(e,t,n,i,o,a,u){i.ast||(i.ast=r,r.initialize());var s=a.length-1;switch(o){case 1:return i.ast.set({expression:{type:"root",value:a[s]}}),i.ast.unshift(),i.ast.yield();case 2:return i.ast.set({expression:{type:"root",value:a[s-1]}}),i.ast.unshift(),i.ast.yield();case 3:return i.ast.unshift(),i.ast.yield();case 4:return i.ast.set({operation:"member",scope:"child",expression:{type:"identifier",value:a[s-1]}}),i.ast.unshift(),i.ast.yield();case 5:case 6:break;case 7:i.ast.set({operation:"member"}),i.ast.push();break;case 8:i.ast.set({operation:"subscript"}),i.ast.push();break;case 9:i.ast.set({scope:"child"});break;case 10:i.ast.set({scope:"descendant"});break;case 11:break;case 12:i.ast.set({scope:"child",operation:"member"});break;case 13:break;case 14:i.ast.set({expression:{type:"wildcard",value:a[s]}});break;case 15:i.ast.set({expression:{type:"identifier",value:a[s]}});break;case 16:i.ast.set({expression:{type:"script_expression",value:a[s]}});break;case 17:i.ast.set({expression:{type:"numeric_literal",value:parseInt(a[s])}});break;case 18:break;case 19:i.ast.set({scope:"child"});break;case 20:i.ast.set({scope:"descendant"});break;case 21:case 22:case 23:break;case 24:a[s].length>1?i.ast.set({expression:{type:"union",value:a[s]}}):this.$=a[s];break;case 25:this.$=[a[s]];break;case 26:this.$=a[s-2].concat(a[s]);break;case 27:this.$={expression:{type:"numeric_literal",value:parseInt(a[s])}},i.ast.set(this.$);break;case 28:this.$={expression:{type:"string_literal",value:a[s]}},i.ast.set(this.$);break;case 29:this.$={expression:{type:"slice",value:a[s]}},i.ast.set(this.$);break;case 30:this.$={expression:{type:"wildcard",value:a[s]}},i.ast.set(this.$);break;case 31:this.$={expression:{type:"script_expression",value:a[s]}},i.ast.set(this.$);break;case 32:this.$={expression:{type:"filter_expression",value:a[s]}},i.ast.set(this.$);break;case 33:case 34:this.$=a[s]}},table:[{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}],defaultActions:{27:[2,23],29:[2,30],30:[2,31],31:[2,32]},parseError:function(e,t){if(!t.recoverable)throw new Error(e);this.trace(e)},parse:function(e){var t=this,r=[0],n=[null],i=[],o=this.table,a="",u=0,s=0,c=0,l=1,f=i.slice.call(arguments,1);this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var d=this.lexer.yylloc;i.push(d);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var p,y,m,v,_,g,b,w,E,A={};;){if(m=r[r.length-1],this.defaultActions[m]?v=this.defaultActions[m]:(null!==p&&void 0!==p||(p=function(){var e;return e=t.lexer.lex()||l,"number"!=typeof e&&(e=t.symbols_[e]||e),e}()),v=o[m]&&o[m][p]),void 0===v||!v.length||!v[0]){var O="";E=[];for(g in o[m])this.terminals_[g]&&g>2&&E.push("'"+this.terminals_[g]+"'");O=this.lexer.showPosition?"Parse error on line "+(u+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(u+1)+": Unexpected "+(p==l?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(O,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:d,expected:E})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+p);switch(v[0]){case 1:r.push(p),n.push(this.lexer.yytext),i.push(this.lexer.yylloc),r.push(v[1]),p=null,y?(p=y,y=null):(s=this.lexer.yyleng,a=this.lexer.yytext,u=this.lexer.yylineno,d=this.lexer.yylloc,c>0&&c--);break;case 2:if(b=this.productions_[v[1]][1],A.$=n[n.length-b],A._$={first_line:i[i.length-(b||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(b||1)].first_column,last_column:i[i.length-1].last_column},h&&(A._$.range=[i[i.length-(b||1)].range[0],i[i.length-1].range[1]]),void 0!==(_=this.performAction.apply(A,[a,s,u,this.yy,v[1],n,i].concat(f))))return _;b&&(r=r.slice(0,-1*b*2),n=n.slice(0,-1*b),i=i.slice(0,-1*b)),r.push(this.productions_[v[1]][0]),n.push(A.$),i.push(A._$),w=o[r[r.length-2]][r[r.length-1]],r.push(w);break;case 3:return!0}}return!0}},r={initialize:function(){this._nodes=[],this._node={},this._stash=[]},set:function(e){for(var t in e)this._node[t]=e[t];return this._node},node:function(e){return arguments.length&&(this._node=e),this._node},push:function(){this._nodes.push(this._node),this._node={}},unshift:function(){this._nodes.unshift(this._node),this._node={}},yield:function(){var e=this._nodes;return this.initialize(),e}},n=function(){return{EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),n=e[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,r,n;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=r,n=o,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,i[o])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,r,n){switch(r){case 0:return 4;case 1:return 14;case 2:return 12;case 3:return 15;case 4:return 16;case 5:return 22;case 6:return 24;case 7:return 28;case 8:return 30;case 9:return 18;case 10:return t.yytext=t.yytext.substr(1,t.yyleng-2),32;case 11:return t.yytext=t.yytext.substr(1,t.yyleng-2),33;case 12:return 17;case 13:return 31}},rules:[/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}}}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();void 0!==e&&void 0!==r&&(r.parser=i,r.Parser=i.Parser,r.parse=function(){return i.parse.apply(i,arguments)},r.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),n.exit(1));var i=e("fs").readFileSync(e("path").normalize(t[1]),"utf8");return r.parser.parse(i)},void 0!==t&&e.main===t&&r.main(n.argv.slice(1)))}).call(this,e("FWaASH"))},{FWaASH:50,fs:49,path:114}],104:[function(e,t,r){t.exports=e("./lib/index")},{"./lib/index":108}],105:[function(e,t,r){t.exports={identifier:"[a-zA-Z_]+[a-zA-Z0-9_]*",integer:"-?(?:0|[1-9][0-9]*)",qq_string:'"(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^"\\\\])*"',q_string:"'(?:\\\\['bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^'\\\\])*'"}},{}],106:[function(e,t,r){var n=e("./dict"),i=e("fs"),o={lex:{macros:{esc:"\\\\",int:n.integer},rules:[["\\$","return 'DOLLAR'"],["\\.\\.","return 'DOT_DOT'"],["\\.","return 'DOT'"],["\\*","return 'STAR'"],[n.identifier,"return 'IDENTIFIER'"],["\\[","return '['"],["\\]","return ']'"],[",","return ','"],["({int})?\\:({int})?(\\:({int})?)?","return 'ARRAY_SLICE'"],["{int}","return 'INTEGER'"],[n.qq_string,"yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"],[n.q_string,"yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"],["\\(.+?\\)(?=\\])","return 'SCRIPT_EXPRESSION'"],["\\?\\(.+?\\)(?=\\])","return 'FILTER_EXPRESSION'"]]},start:"JSON_PATH",bnf:{JSON_PATH:[["DOLLAR",'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()'],["DOLLAR PATH_COMPONENTS",'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()'],["LEADING_CHILD_MEMBER_EXPRESSION","yy.ast.unshift(); return yy.ast.yield()"],["LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS",'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()']],PATH_COMPONENTS:[["PATH_COMPONENT",""],["PATH_COMPONENTS PATH_COMPONENT",""]],PATH_COMPONENT:[["MEMBER_COMPONENT",'yy.ast.set({ operation: "member" }); yy.ast.push()'],["SUBSCRIPT_COMPONENT",'yy.ast.set({ operation: "subscript" }); yy.ast.push() ']],MEMBER_COMPONENT:[["CHILD_MEMBER_COMPONENT",'yy.ast.set({ scope: "child" })'],["DESCENDANT_MEMBER_COMPONENT",'yy.ast.set({ scope: "descendant" })']],CHILD_MEMBER_COMPONENT:[["DOT MEMBER_EXPRESSION",""]],LEADING_CHILD_MEMBER_EXPRESSION:[["MEMBER_EXPRESSION",'yy.ast.set({ scope: "child", operation: "member" })']],DESCENDANT_MEMBER_COMPONENT:[["DOT_DOT MEMBER_EXPRESSION",""]],MEMBER_EXPRESSION:[["STAR",'yy.ast.set({ expression: { type: "wildcard", value: $1 } })'],["IDENTIFIER",'yy.ast.set({ expression: { type: "identifier", value: $1 } })'],["SCRIPT_EXPRESSION",'yy.ast.set({ expression: { type: "script_expression", value: $1 } })'],["INTEGER",'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })'],["END",""]],SUBSCRIPT_COMPONENT:[["CHILD_SUBSCRIPT_COMPONENT",'yy.ast.set({ scope: "child" })'],["DESCENDANT_SUBSCRIPT_COMPONENT",'yy.ast.set({ scope: "descendant" })']],CHILD_SUBSCRIPT_COMPONENT:[["[ SUBSCRIPT ]",""]],DESCENDANT_SUBSCRIPT_COMPONENT:[["DOT_DOT [ SUBSCRIPT ]",""]],SUBSCRIPT:[["SUBSCRIPT_EXPRESSION",""],["SUBSCRIPT_EXPRESSION_LIST",'$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1']],SUBSCRIPT_EXPRESSION_LIST:[["SUBSCRIPT_EXPRESSION_LISTABLE","$$ = [$1]"],["SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE","$$ = $1.concat($3)"]],SUBSCRIPT_EXPRESSION_LISTABLE:[["INTEGER",'$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)'],["STRING_LITERAL",'$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)'],["ARRAY_SLICE",'$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)']],SUBSCRIPT_EXPRESSION:[["STAR",'$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)'],["SCRIPT_EXPRESSION",'$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)'],["FILTER_EXPRESSION",'$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)']],STRING_LITERAL:[["QQ_STRING","$$ = $1"],["Q_STRING","$$ = $1"]]}};i.readFileSync&&(o.moduleInclude=i.readFileSync(e.resolve("../include/module.js")),o.actionInclude=i.readFileSync(e.resolve("../include/action.js"))),t.exports=o},{"./dict":105,fs:49}],107:[function(e,t,r){function n(t,r,n){var i=e("./index"),o=d.parse(r).body[0].expression,a=c(o,{"@":t.value}),u=n.replace(/\{\{\s*value\s*\}\}/g,a),s=i.nodes(t.value,u);return s.forEach(function(e){e.path=t.path.concat(e.path.slice(1))}),s}function i(e){return Array.isArray(e)}function o(e){return e&&!(e instanceof Array)&&e instanceof Object}function a(e){return function(t,r,n,a){var u=t.value,s=t.path,c=[],l=function(t,u){i(t)?(t.forEach(function(e,t){c.length>=a||n(t,e,r)&&c.push({path:u.concat(t),value:e})}),t.forEach(function(t,r){c.length>=a||e&&l(t,u.concat(r))})):o(t)&&(this.keys(t).forEach(function(e){c.length>=a||n(e,t[e],r)&&c.push({path:u.concat(e),value:t[e]})}),this.keys(t).forEach(function(r){c.length>=a||e&&l(t[r],u.concat(r))}))}.bind(this);return l(u,s),c}}function u(e){return function(t,r,n){return this.descend(r,t.expression.value,e,n)}}function s(e){return function(t,r,n){return this.traverse(r,t.expression.value,e,n)}}function c(){try{return p.apply(this,arguments)}catch(e){}}function l(e){return e=e.filter(function(e){return e}),y(e,function(e){return e.path.map(function(e){return String(e).replace("-","--")}).join("-")})}function f(e){var t=String(e);return t.match(/^-?[0-9]+$/)?parseInt(t):null}var d=e("./aesprim"),h=e("./slice"),p=e("static-eval"),y=e("underscore").uniq,m=function(){return this.initialize.apply(this,arguments)};m.prototype.initialize=function(){this.traverse=a(!0),this.descend=a()},m.prototype.keys=Object.keys,m.prototype.resolve=function(e){var t=[e.operation,e.scope,e.expression.type].join("-"),r=this._fns[t];if(!r)throw new Error("couldn't resolve key: "+t);return r.bind(this)},m.prototype.register=function(e,t){if(!t instanceof Function)throw new Error("handler must be a function");this._fns[e]=t},m.prototype._fns={"member-child-identifier":function(e,t){var r=e.expression.value,n=t.value;if(n instanceof Object&&r in n)return[{value:n[r],path:t.path.concat(r)}]},"member-descendant-identifier":s(function(e,t,r){return e==r}),"subscript-child-numeric_literal":u(function(e,t,r){return e===r}),"member-child-numeric_literal":u(function(e,t,r){return String(e)===String(r)}),"subscript-descendant-numeric_literal":s(function(e,t,r){return e===r}),"member-child-wildcard":u(function(){return!0}),"member-descendant-wildcard":s(function(){return!0}),"subscript-descendant-wildcard":s(function(){return!0}),"subscript-child-wildcard":u(function(){return!0}),"subscript-child-slice":function(e,t){if(i(t.value)){var r=e.expression.value.split(":").map(f),n=t.value.map(function(e,r){return{value:e,path:t.path.concat(r)}});return h.apply(null,[n].concat(r))}},"subscript-child-union":function(e,t){var r=[];return e.expression.value.forEach(function(e){var n={operation:"subscript",scope:"child",expression:e.expression},i=this.resolve(n),o=i(n,t);o&&(r=r.concat(o))},this),l(r)},"subscript-descendant-union":function(t,r,n){var i=e(".."),o=this,a=[];return i.nodes(r,"$..*").slice(1).forEach(function(e){a.length>=n||t.expression.value.forEach(function(t){var r={operation:"subscript",scope:"child",expression:t.expression},n=o.resolve(r),i=n(r,e);a=a.concat(i)})}),l(a)},"subscript-child-filter_expression":function(e,t,r){var n=e.expression.value.slice(2,-1),i=d.parse(n).body[0].expression,o=function(e,t){return c(i,{"@":t})};return this.descend(t,null,o,r)},"subscript-descendant-filter_expression":function(e,t,r){var n=e.expression.value.slice(2,-1),i=d.parse(n).body[0].expression,o=function(e,t){return c(i,{"@":t})};return this.traverse(t,null,o,r)},"subscript-child-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$[{{value}}]")},"member-child-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$.{{value}}")},"member-descendant-script_expression":function(e,t){return n(t,e.expression.value.slice(1,-1),"$..value")}},m.prototype._fns["subscript-child-string_literal"]=m.prototype._fns["member-child-identifier"],m.prototype._fns["member-descendant-numeric_literal"]=m.prototype._fns["subscript-descendant-string_literal"]=m.prototype._fns["member-descendant-identifier"],t.exports=m},{"..":108,"./aesprim":102,"./index":108,"./slice":110,"static-eval":119,underscore:133}],108:[function(e,t,r){function n(e){return"[object String]"==Object.prototype.toString.call(e)}var i=e("assert"),o=e("./dict"),a=e("./parser"),u=e("./handlers"),s=function(){this.initialize.apply(this,arguments)};s.prototype.initialize=function(){this.parser=new a,this.handlers=new u},s.prototype.parse=function(e){return i.ok(n(e),"we need a path"),this.parser.parse(e)},s.prototype.parent=function(e,t){i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path");var r=this.nodes(e,t)[0];r.path.pop();return this.value(e,r.path)},s.prototype.apply=function(e,t,r){i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),i.equal(typeof r,"function","fn needs to be function");var n=this.nodes(e,t).sort(function(e,t){return t.path.length-e.path.length});return n.forEach(function(t){var n=t.path.pop(),i=this.value(e,this.stringify(t.path)),o=t.value=r.call(e,i[n]);i[n]=o},this),n},s.prototype.value=function(e,t,r){if(i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),arguments.length>=3){var n=this.nodes(e,t).shift();if(!n)return this._vivify(e,t,r);var o=n.path.slice(-1).shift();this.parent(e,this.stringify(n.path))[o]=r}return this.query(e,this.stringify(t),1).shift()},s.prototype._vivify=function(e,t,r){var n=this;i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path");var o=this.parser.parse(t).map(function(e){return e.expression.value}),a=function(t,r){var i=t.pop(),o=n.value(e,t);o||(a(t.concat(),"string"==typeof i?{}:[]),o=n.value(e,t)),o[i]=r};return a(o,r),this.query(e,t)[0]},s.prototype.query=function(e,t,r){return i.ok(e instanceof Object,"obj needs to be an object"),i.ok(n(t),"we need a path"),this.nodes(e,t,r).map(function(e){return e.value})},s.prototype.paths=function(e,t,r){return i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),this.nodes(e,t,r).map(function(e){return e.path})},s.prototype.nodes=function(e,t,r){if(i.ok(e instanceof Object,"obj needs to be an object"),i.ok(t,"we need a path"),0===r)return[];var n=this.parser.parse(t),o=this.handlers,a=[{path:["$"],value:e}],u=[];return n.length&&"root"==n[0].expression.type&&n.shift(),n.length?(n.forEach(function(e,t){if(!(u.length>=r)){var i=o.resolve(e),s=[];a.forEach(function(o){if(!(u.length>=r)){var a=i(e,o,r);t==n.length-1?u=u.concat(a||[]):s=s.concat(a||[])}}),a=s}}),r?u.slice(0,r):u):a},s.prototype.stringify=function(e){i.ok(e,"we need a path");var t="$",r={"descendant-member":"..{{value}}","child-member":".{{value}}","descendant-subscript":"..[{{value}}]","child-subscript":"[{{value}}]"};return e=this._normalize(e),e.forEach(function(e){if("root"!=e.expression.type){var n,i=[e.scope,e.operation].join("-"),o=r[i];if(n="string_literal"==e.expression.type?JSON.stringify(e.expression.value):e.expression.value,!o)throw new Error("couldn't find template "+i);t+=o.replace(/{{value}}/,n)}}),t},s.prototype._normalize=function(e){if(i.ok(e,"we need a path"),"string"==typeof e)return this.parser.parse(e);if(Array.isArray(e)&&"string"==typeof e[0]){var t=[{expression:{type:"root",value:"$"}}];return e.forEach(function(e,r){if("$"!=e||0!==r)if("string"==typeof e&&e.match("^"+o.identifier+"$"))t.push({operation:"member",scope:"child",expression:{value:e,type:"identifier"}});else{var n="number"==typeof e?"numeric_literal":"string_literal";t.push({operation:"subscript",scope:"child",expression:{value:e,type:n}})}}),t}if(Array.isArray(e)&&"object"==typeof e[0])return e;throw new Error("couldn't understand path "+e)},s.Handlers=u,s.Parser=a;var c=new s;c.JSONPath=s,t.exports=c},{"./dict":105,"./handlers":107,"./parser":109,assert:44}],109:[function(e,t,r){var n=e("./grammar"),i=e("../generated/parser"),o=function(){var e=new i.Parser,t=e.parseError;return e.yy.parseError=function(){e.yy.ast&&e.yy.ast.initialize(),t.apply(e,arguments)},e};o.grammar=n,t.exports=o},{"../generated/parser":103,"./grammar":106}],110:[function(e,t,r){function n(e){return String(e).match(/^[0-9]+$/)?parseInt(e):Number.isFinite(e)?parseInt(e,10):0}t.exports=function(e,t,r,i){if("string"==typeof t)throw new Error("start cannot be a string");if("string"==typeof r)throw new Error("end cannot be a string");if("string"==typeof i)throw new Error("step cannot be a string");var o=e.length;if(0===i)throw new Error("step cannot be zero");if(i=i?n(i):1,t=t<0?o+t:t,r=r<0?o+r:r,t=n(0===t?0:t||(i>0?0:o-1)),r=n(0===r?0:r||(i>0?o:-1)),t=i>0?Math.max(0,t):Math.min(o,t),r=i>0?Math.min(r,o):Math.max(-1,r),i>0&&r<=t)return[];if(i<0&&t<=r)return[];for(var a=[],u=t;u!=r&&!(i<0&&u<=r||i>0&&u>=r);u+=i)a.push(e[u]);return a}},{}],111:[function(e,t,r){(function(e){(function(){function n(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function i(e,t,r,n){for(var i=-1,o=null==e?0:e.length;++i-1}function l(e,t,r){for(var n=-1,i=null==e?0:e.length;++n-1;);return r}function R(e,t){for(var r=e.length;r--&&b(t,e[r],0)>-1;);return r}function I(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}function N(e){return"\\"+Sr[e]}function U(e,t){return null==e?re:e[t]}function L(e){return mr.test(e)}function z(e){return vr.test(e)}function G(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r}function q(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function V(e,t){return function(r){return e(t(r))}}function H(e,t){ -for(var r=-1,n=e.length,i=0,o=[];++r>>1,Ne=[["ary",Ee],["bind",ye],["bindKey",me],["curry",_e],["curryRight",ge],["flip",Oe],["partial",be],["partialRight",we],["rearg",Ae]],Ue="[object Arguments]",Le="[object Array]",ze="[object AsyncFunction]",Ge="[object Boolean]",qe="[object Date]",Ve="[object DOMException]",He="[object Error]",We="[object Function]",Ye="[object GeneratorFunction]",$e="[object Map]",Ke="[object Number]",Je="[object Null]",Qe="[object Object]",Xe="[object Proxy]",Ze="[object RegExp]",et="[object Set]",tt="[object String]",rt="[object Symbol]",nt="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",at="[object ArrayBuffer]",ut="[object DataView]",st="[object Float32Array]",ct="[object Float64Array]",lt="[object Int8Array]",ft="[object Int16Array]",dt="[object Int32Array]",ht="[object Uint8Array]",pt="[object Uint8ClampedArray]",yt="[object Uint16Array]",mt="[object Uint32Array]",vt=/\b__p \+= '';/g,_t=/\b(__p \+=) '' \+/g,gt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,bt=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,Et=RegExp(bt.source),At=RegExp(wt.source),Ot=/<%-([\s\S]+?)%>/g,St=/<%([\s\S]+?)%>/g,Pt=/<%=([\s\S]+?)%>/g,Dt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ct=/^\w*$/,kt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Tt=/[\\^$.*+?()[\]{}|]/g,Ft=RegExp(Tt.source),jt=/^\s+/,xt=/\s/,Bt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Mt=/\{\n\/\* \[wrapped with (.+)\] \*/,Rt=/,? & /,It=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Nt=/[()=,{}\[\]\/\s]/,Ut=/\\(\\)?/g,Lt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,zt=/\w*$/,Gt=/^[-+]0x[0-9a-f]+$/i,qt=/^0b[01]+$/i,Vt=/^\[object .+?Constructor\]$/,Ht=/^0o[0-7]+$/i,Wt=/^(?:0|[1-9]\d*)$/,Yt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,$t=/($^)/,Kt=/['\n\r\u2028\u2029\\]/g,Jt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Xt="["+Qt+"]",Zt="["+Jt+"]",er="[a-z\\xdf-\\xf6\\xf8-\\xff]",tr="[^\\ud800-\\udfff"+Qt+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",rr="\\ud83c[\\udffb-\\udfff]",nr="(?:\\ud83c[\\udde6-\\uddff]){2}",ir="[\\ud800-\\udbff][\\udc00-\\udfff]",or="[A-Z\\xc0-\\xd6\\xd8-\\xde]",ar="(?:"+er+"|"+tr+")",ur="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",sr="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",nr,ir].join("|")+")[\\ufe0e\\ufe0f]?"+ur+")*",cr="[\\ufe0e\\ufe0f]?"+ur+sr,lr="(?:"+["[\\u2700-\\u27bf]",nr,ir].join("|")+")"+cr,fr="(?:"+["[^\\ud800-\\udfff]"+Zt+"?",Zt,nr,ir,"[\\ud800-\\udfff]"].join("|")+")",dr=RegExp("['’]","g"),hr=RegExp(Zt,"g"),pr=RegExp(rr+"(?="+rr+")|"+fr+cr,"g"),yr=RegExp([or+"?"+er+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Xt,or,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Xt,or+ar,"$"].join("|")+")",or+"?"+ar+"+(?:['’](?:d|ll|m|re|s|t|ve))?",or+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",lr].join("|"),"g"),mr=RegExp("[\\u200d\\ud800-\\udfff"+Jt+"\\ufe0e\\ufe0f]"),vr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,_r=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],gr=-1,br={};br[st]=br[ct]=br[lt]=br[ft]=br[dt]=br[ht]=br[pt]=br[yt]=br[mt]=!0,br[Ue]=br[Le]=br[at]=br[Ge]=br[ut]=br[qe]=br[He]=br[We]=br[$e]=br[Ke]=br[Qe]=br[Ze]=br[et]=br[tt]=br[it]=!1;var wr={};wr[Ue]=wr[Le]=wr[at]=wr[ut]=wr[Ge]=wr[qe]=wr[st]=wr[ct]=wr[lt]=wr[ft]=wr[dt]=wr[$e]=wr[Ke]=wr[Qe]=wr[Ze]=wr[et]=wr[tt]=wr[rt]=wr[ht]=wr[pt]=wr[yt]=wr[mt]=!0,wr[He]=wr[We]=wr[it]=!1;var Er={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Ar={"&":"&","<":"<",">":">",'"':""","'":"'"},Or={"&":"&","<":"<",">":">",""":'"',"'":"'"},Sr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Pr=parseFloat,Dr=parseInt,Cr="object"==typeof e&&e&&e.Object===Object&&e,kr="object"==typeof self&&self&&self.Object===Object&&self,Tr=Cr||kr||Function("return this")(),Fr="object"==typeof r&&r&&!r.nodeType&&r,jr=Fr&&"object"==typeof t&&t&&!t.nodeType&&t,xr=jr&&jr.exports===Fr,Br=xr&&Cr.process,Mr=function(){try{var e=jr&&jr.require&&jr.require("util").types;return e||Br&&Br.binding&&Br.binding("util")}catch(e){}}(),Rr=Mr&&Mr.isArrayBuffer,Ir=Mr&&Mr.isDate,Nr=Mr&&Mr.isMap,Ur=Mr&&Mr.isRegExp,Lr=Mr&&Mr.isSet,zr=Mr&&Mr.isTypedArray,Gr=O("length"),qr=S(Er),Vr=S(Ar),Hr=S(Or),Wr=function e(t){function r(e){if(ns(e)&&!yd(e)&&!(e instanceof $)){if(e instanceof S)return e;if(pl.call(e,"__wrapped__"))return ea(e)}return new S(e)}function m(){}function S(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=re}function $(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Me,this.__views__=[]}function Z(){var e=new $(this.__wrapped__);return e.__actions__=Bi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Bi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Bi(this.__views__),e}function ee(){if(this.__filtered__){var e=new $(this);e.__dir__=-1,e.__filtered__=!0}else e=this.clone(),e.__dir__*=-1;return e}function xt(){var e=this.__wrapped__.value(),t=this.__dir__,r=yd(e),n=t<0,i=r?e.length:0,o=Oo(0,i,this.__views__),a=o.start,u=o.end,s=u-a,c=n?u:a-1,l=this.__iteratees__,f=l.length,d=0,h=Vl(s,this.__takeCount__);if(!r||!n&&i==s&&h==s)return vi(e,this.__actions__);var p=[];e:for(;s--&&d-1}function ar(e,t){var r=this.__data__,n=$r(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function ur(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function tn(e,t,r,n,i,a){var u,s=t&le,c=t&fe,l=t&de;if(r&&(u=i?r(e,n,i,a):r(e)),u!==re)return u;if(!rs(e))return e;var f=yd(e);if(f){if(u=Do(e),!s)return Bi(e,u)}else{var d=Sf(e),h=d==We||d==Ye;if(vd(e))return Oi(e,s);if(d==Qe||d==Ue||h&&!i){if(u=c||h?{}:Co(e),!s)return c?Ii(e,Qr(u,e)):Ri(e,Jr(u,e))}else{if(!wr[d])return i?e:{};u=ko(e,d,s)}}a||(a=new Er);var p=a.get(e);if(p)return p;a.set(e,u),wd(e)?e.forEach(function(n){u.add(tn(n,t,r,n,e,a))}):gd(e)&&e.forEach(function(n,i){u.set(i,tn(n,t,r,i,e,a))});var y=l?c?mo:yo:c?Us:Ns,m=f?re:y(e);return o(m||e,function(n,i){m&&(i=n,n=e[i]),Yr(u,i,tn(n,t,r,i,e,a))}),u}function rn(e){var t=Ns(e);return function(r){return nn(r,e,t)}}function nn(e,t,r){var n=r.length;if(null==e)return!n;for(e=ol(e);n--;){var i=r[n],o=t[i],a=e[i];if(a===re&&!(i in e)||!o(a))return!1}return!0}function on(e,t,r){if("function"!=typeof e)throw new sl(oe);return Cf(function(){e.apply(re,r)},t)}function an(e,t,r,n){var i=-1,o=c,a=!0,u=e.length,s=[],d=t.length;if(!u)return s;r&&(t=f(t,j(r))),n?(o=l,a=!1):t.length>=ne&&(o=B,a=!1,t=new yr(t));e:for(;++ii?0:i+r),n=n===re||n>i?i:bs(n),n<0&&(n+=i),n=r>n?0:ws(n);r0&&r(u)?t>1?fn(u,t-1,r,n,i):d(i,u):n||(i[i.length]=u)}return i}function dn(e,t){return e&&yf(e,t,Ns)}function hn(e,t){return e&&mf(e,t,Ns)}function pn(e,t){return s(t,function(t){return Zu(e[t])})}function yn(e,t){t=Ei(t,e);for(var r=0,n=t.length;null!=e&&rt}function gn(e,t){return null!=e&&pl.call(e,t)}function bn(e,t){return null!=e&&t in ol(e)}function wn(e,t,r){return e>=Vl(t,r)&&e=120&&h.length>=120)?new yr(a&&h):re}h=e[0];var p=-1,y=u[0];e:for(;++p-1;)u!==e&&Cl.call(u,s,1),Cl.call(e,s,1);return e}function Qn(e,t){for(var r=e?t.length:0,n=r-1;r--;){var i=t[r];if(r==n||i!==o){var o=i;jo(i)?Cl.call(e,i,1):pi(e,i)}}return e}function Xn(e,t){return e+Il(Yl()*(t-e+1))}function Zn(e,t,r,n){for(var i=-1,o=ql(Rl((t-e)/(r||1)),0),a=el(o);o--;)a[n?o:++i]=e,e+=r;return a}function ei(e,t){var r="";if(!e||t<1||t>je)return r;do{t%2&&(r+=e),(t=Il(t/2))&&(e+=e)}while(t);return r}function ti(e,t){return kf(Vo(e,t,Cc),e+"")}function ri(e){return jr(Qs(e))}function ni(e,t){var r=Qs(e);return Jo(r,en(t,0,r.length))}function ii(e,t,r,n){if(!rs(e))return e;t=Ei(t,e);for(var i=-1,o=t.length,a=o-1,u=e;null!=u&&++ii?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var o=el(i);++n>>1,a=e[o];null!==a&&!ps(a)&&(r?a<=t:a=ne){var f=t?null:wf(e);if(f)return W(f);a=!1,i=B,s=new yr}else s=t?[]:u;e:for(;++n=n?e:ai(e,t,r)}function Oi(e,t){if(t)return e.slice();var r=e.length,n=Ol?Ol(r):new e.constructor(r);return e.copy(n),n}function Si(e){var t=new e.constructor(e.byteLength);return new Al(t).set(new Al(e)),t}function Pi(e,t){var r=t?Si(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}function Di(e){var t=new e.constructor(e.source,zt.exec(e));return t.lastIndex=e.lastIndex,t}function Ci(e){return lf?ol(lf.call(e)):{}}function ki(e,t){var r=t?Si(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function Ti(e,t){if(e!==t){var r=e!==re,n=null===e,i=e===e,o=ps(e),a=t!==re,u=null===t,s=t===t,c=ps(t);if(!u&&!c&&!o&&e>t||o&&a&&s&&!u&&!c||n&&a&&s||!r&&s||!i)return 1;if(!n&&!o&&!c&&e=u)return s;return s*("desc"==r[n]?-1:1)}}return e.index-t.index}function ji(e,t,r,n){for(var i=-1,o=e.length,a=r.length,u=-1,s=t.length,c=ql(o-a,0),l=el(s+c),f=!n;++u1?r[i-1]:re,a=i>2?r[2]:re;for(o=e.length>3&&"function"==typeof o?(i--,o):re,a&&xo(r[0],r[1],a)&&(o=i<3?re:o,i=1),t=ol(t);++n-1?i[o?t[a]:a]:re}}function $i(e){return po(function(t){var r=t.length,n=r,i=S.prototype.thru;for(e&&t.reverse();n--;){var o=t[n];if("function"!=typeof o)throw new sl(oe);if(i&&!a&&"wrapper"==vo(o))var a=new S([],!0)}for(n=a?n:r;++n1&&_.reverse(),f&&su))return!1;var c=o.get(e),l=o.get(t);if(c&&l)return c==t&&l==e;var f=-1,d=!0,h=r&pe?new yr:re;for(o.set(e,t),o.set(t,e);++f1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(Bt,"{\n/* [wrapped with "+t+"] */\n")}function Fo(e){return yd(e)||pd(e)||!!(kl&&e&&e[kl])}function jo(e,t){var r=typeof e;return!!(t=null==t?je:t)&&("number"==r||"symbol"!=r&&Wt.test(e))&&e>-1&&e%1==0&&e0){if(++t>=De)return arguments[0]}else t=0;return e.apply(re,arguments)}}function Jo(e,t){var r=-1,n=e.length,i=n-1;for(t=t===re?n:t;++r=this.__values__.length;return{done:e,value:e?re:this.__values__[this.__index__++]}}function eu(){return this}function tu(e){for(var t,r=this;r instanceof m;){var n=ea(r);n.__index__=0,n.__values__=re,t?i.__wrapped__=n:t=n;var i=n;r=r.__wrapped__}return i.__wrapped__=e,t}function ru(){var e=this.__wrapped__;if(e instanceof $){var t=e;return this.__actions__.length&&(t=new $(this)),t=t.reverse(),t.__actions__.push({func:Ja,args:[Pa],thisArg:re}),new S(t,this.__chain__)}return this.thru(Pa)}function nu(){return vi(this.__wrapped__,this.__actions__)}function iu(e,t,r){var n=yd(e)?u:un;return r&&xo(e,t,r)&&(t=re),n(e,go(t,3))}function ou(e,t){return(yd(e)?s:ln)(e,go(t,3))}function au(e,t){return fn(du(e,t),1)}function uu(e,t){return fn(du(e,t),Fe)}function su(e,t,r){return r=r===re?1:bs(r),fn(du(e,t),r)}function cu(e,t){return(yd(e)?o:hf)(e,go(t,3))}function lu(e,t){return(yd(e)?a:pf)(e,go(t,3))}function fu(e,t,r,n){e=Vu(e)?e:Qs(e),r=r&&!n?bs(r):0;var i=e.length;return r<0&&(r=ql(i+r,0)),hs(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&b(e,t,r)>-1}function du(e,t){return(yd(e)?f:Ln)(e,go(t,3))}function hu(e,t,r,n){return null==e?[]:(yd(t)||(t=null==t?[]:[t]),r=n?re:r,yd(r)||(r=null==r?[]:[r]),Wn(e,t,r))}function pu(e,t,r){var n=yd(e)?h:P,i=arguments.length<3;return n(e,go(t,4),r,i,hf)}function yu(e,t,r){var n=yd(e)?p:P,i=arguments.length<3;return n(e,go(t,4),r,i,pf)}function mu(e,t){return(yd(e)?s:ln)(e,Tu(go(t,3)))}function vu(e){return(yd(e)?jr:ri)(e)}function _u(e,t,r){return t=(r?xo(e,t,r):t===re)?1:bs(t),(yd(e)?Br:ni)(e,t)}function gu(e){return(yd(e)?Mr:oi)(e)}function bu(e){if(null==e)return 0;if(Vu(e))return hs(e)?J(e):e.length;var t=Sf(e);return t==$e||t==et?e.size:In(e).length}function wu(e,t,r){var n=yd(e)?y:ui;return r&&xo(e,t,r)&&(t=re),n(e,go(t,3))}function Eu(e,t){if("function"!=typeof t)throw new sl(oe);return e=bs(e),function(){if(--e<1)return t.apply(this,arguments)}}function Au(e,t,r){return t=r?re:t,t=e&&null==t?e.length:t,ao(e,Ee,re,re,re,re,t)}function Ou(e,t){var r;if("function"!=typeof t)throw new sl(oe);return e=bs(e),function(){return--e>0&&(r=t.apply(this,arguments)),e<=1&&(t=re),r}}function Su(e,t,r){t=r?re:t;var n=ao(e,_e,re,re,re,re,re,t);return n.placeholder=Su.placeholder,n}function Pu(e,t,r){t=r?re:t;var n=ao(e,ge,re,re,re,re,re,t);return n.placeholder=Pu.placeholder,n}function Du(e,t,r){function n(t){var r=d,n=h;return d=h=re,_=t,y=e.apply(n,r)}function i(e){return _=e,m=Cf(u,t),g?n(e):y}function o(e){var r=e-v,n=e-_,i=t-r;return b?Vl(i,p-n):i}function a(e){var r=e-v,n=e-_;return v===re||r>=t||r<0||b&&n>=p}function u(){var e=nd();if(a(e))return s(e);m=Cf(u,o(e))}function s(e){return m=re,w&&d?n(e):(d=h=re,y)}function c(){m!==re&&bf(m),_=0,d=v=h=m=re}function l(){return m===re?y:s(nd())}function f(){var e=nd(),r=a(e);if(d=arguments,h=this,v=e,r){if(m===re)return i(v);if(b)return bf(m),m=Cf(u,t),n(v)}return m===re&&(m=Cf(u,t)),y}var d,h,p,y,m,v,_=0,g=!1,b=!1,w=!0;if("function"!=typeof e)throw new sl(oe);return t=Es(t)||0,rs(r)&&(g=!!r.leading,b="maxWait"in r,p=b?ql(Es(r.maxWait)||0,t):p,w="trailing"in r?!!r.trailing:w),f.cancel=c,f.flush=l,f}function Cu(e){return ao(e,Oe)}function ku(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new sl(oe);var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var a=e.apply(this,n);return r.cache=o.set(i,a)||o,a};return r.cache=new(ku.Cache||ur),r}function Tu(e){if("function"!=typeof e)throw new sl(oe);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function Fu(e){return Ou(2,e)}function ju(e,t){if("function"!=typeof e)throw new sl(oe);return t=t===re?t:bs(t),ti(e,t)}function xu(e,t){if("function"!=typeof e)throw new sl(oe);return t=null==t?0:ql(bs(t),0),ti(function(r){var i=r[t],o=Ai(r,0,t);return i&&d(o,i),n(e,this,o)})}function Bu(e,t,r){var n=!0,i=!0;if("function"!=typeof e)throw new sl(oe);return rs(r)&&(n="leading"in r?!!r.leading:n,i="trailing"in r?!!r.trailing:i),Du(e,t,{leading:n,maxWait:t,trailing:i})}function Mu(e){return Au(e,1)}function Ru(e,t){return cd(wi(t),e)}function Iu(){if(!arguments.length)return[];var e=arguments[0];return yd(e)?e:[e]}function Nu(e){return tn(e,de)}function Uu(e,t){return t="function"==typeof t?t:re,tn(e,de,t)}function Lu(e){return tn(e,le|de)}function zu(e,t){return t="function"==typeof t?t:re,tn(e,le|de,t)}function Gu(e,t){return null==t||nn(e,t,Ns(t))}function qu(e,t){return e===t||e!==e&&t!==t}function Vu(e){return null!=e&&ts(e.length)&&!Zu(e)}function Hu(e){return ns(e)&&Vu(e)}function Wu(e){return!0===e||!1===e||ns(e)&&vn(e)==Ge}function Yu(e){return ns(e)&&1===e.nodeType&&!fs(e)}function $u(e){if(null==e)return!0;if(Vu(e)&&(yd(e)||"string"==typeof e||"function"==typeof e.splice||vd(e)||Ed(e)||pd(e)))return!e.length;var t=Sf(e);if(t==$e||t==et)return!e.size;if(No(e))return!In(e).length;for(var r in e)if(pl.call(e,r))return!1;return!0}function Ku(e,t){return Cn(e,t)}function Ju(e,t,r){r="function"==typeof r?r:re;var n=r?r(e,t):re;return n===re?Cn(e,t,re,r):!!n}function Qu(e){if(!ns(e))return!1;var t=vn(e);return t==He||t==Ve||"string"==typeof e.message&&"string"==typeof e.name&&!fs(e)}function Xu(e){return"number"==typeof e&&Ll(e)}function Zu(e){if(!rs(e))return!1;var t=vn(e);return t==We||t==Ye||t==ze||t==Xe}function es(e){return"number"==typeof e&&e==bs(e)}function ts(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=je}function rs(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ns(e){return null!=e&&"object"==typeof e}function is(e,t){return e===t||Fn(e,t,wo(t))}function os(e,t,r){return r="function"==typeof r?r:re,Fn(e,t,wo(t),r)}function as(e){return ls(e)&&e!=+e}function us(e){if(Pf(e))throw new rl(ie);return jn(e)}function ss(e){return null===e}function cs(e){return null==e}function ls(e){return"number"==typeof e||ns(e)&&vn(e)==Ke}function fs(e){if(!ns(e)||vn(e)!=Qe)return!1;var t=Sl(e);if(null===t)return!0;var r=pl.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&hl.call(r)==_l}function ds(e){return es(e)&&e>=-je&&e<=je}function hs(e){return"string"==typeof e||!yd(e)&&ns(e)&&vn(e)==tt}function ps(e){return"symbol"==typeof e||ns(e)&&vn(e)==rt}function ys(e){return e===re}function ms(e){return ns(e)&&Sf(e)==it}function vs(e){return ns(e)&&vn(e)==ot}function _s(e){if(!e)return[];if(Vu(e))return hs(e)?Q(e):Bi(e);if(Tl&&e[Tl])return G(e[Tl]());var t=Sf(e);return(t==$e?q:t==et?W:Qs)(e)}function gs(e){if(!e)return 0===e?e:0;if((e=Es(e))===Fe||e===-Fe){return(e<0?-1:1)*xe}return e===e?e:0}function bs(e){var t=gs(e),r=t%1;return t===t?r?t-r:t:0}function ws(e){return e?en(bs(e),0,Me):0}function Es(e){if("number"==typeof e)return e;if(ps(e))return Be;if(rs(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=rs(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=F(e);var r=qt.test(e);return r||Ht.test(e)?Dr(e.slice(2),r?2:8):Gt.test(e)?Be:+e}function As(e){return Mi(e,Us(e))}function Os(e){return e?en(bs(e),-je,je):0===e?e:0}function Ss(e){return null==e?"":di(e)}function Ps(e,t){var r=df(e);return null==t?r:Jr(r,t)}function Ds(e,t){return _(e,go(t,3),dn)}function Cs(e,t){return _(e,go(t,3),hn)}function ks(e,t){return null==e?e:yf(e,go(t,3),Us)}function Ts(e,t){return null==e?e:mf(e,go(t,3),Us)}function Fs(e,t){return e&&dn(e,go(t,3))}function js(e,t){return e&&hn(e,go(t,3))}function xs(e){return null==e?[]:pn(e,Ns(e))}function Bs(e){return null==e?[]:pn(e,Us(e))}function Ms(e,t,r){var n=null==e?re:yn(e,t);return n===re?r:n}function Rs(e,t){return null!=e&&Po(e,t,gn)}function Is(e,t){return null!=e&&Po(e,t,bn)}function Ns(e){return Vu(e)?Fr(e):In(e)}function Us(e){return Vu(e)?Fr(e,!0):Nn(e)}function Ls(e,t){var r={};return t=go(t,3),dn(e,function(e,n,i){Xr(r,t(e,n,i),e)}),r}function zs(e,t){var r={};return t=go(t,3),dn(e,function(e,n,i){Xr(r,n,t(e,n,i))}),r}function Gs(e,t){return qs(e,Tu(go(t)))}function qs(e,t){if(null==e)return{};var r=f(mo(e),function(e){return[e]});return t=go(t),$n(e,r,function(e,r){return t(e,r[0])})}function Vs(e,t,r){t=Ei(t,e);var n=-1,i=t.length;for(i||(i=1,e=re);++nt){var n=e;e=t,t=n}if(r||e%1||t%1){var i=Yl();return Vl(e+i*(t-e+Pr("1e-"+((i+"").length-1))),t)}return Xn(e,t)}function rc(e){return $d(Ss(e).toLowerCase())}function nc(e){return(e=Ss(e))&&e.replace(Yt,qr).replace(hr,"")}function ic(e,t,r){e=Ss(e),t=di(t);var n=e.length;r=r===re?n:en(bs(r),0,n);var i=r;return(r-=t.length)>=0&&e.slice(r,i)==t}function oc(e){return e=Ss(e),e&&At.test(e)?e.replace(wt,Vr):e}function ac(e){return e=Ss(e),e&&Ft.test(e)?e.replace(Tt,"\\$&"):e}function uc(e,t,r){e=Ss(e),t=bs(t);var n=t?J(e):0;if(!t||n>=t)return e;var i=(t-n)/2;return Zi(Il(i),r)+e+Zi(Rl(i),r)}function sc(e,t,r){e=Ss(e),t=bs(t);var n=t?J(e):0;return t&&n>>0)?(e=Ss(e),e&&("string"==typeof t||null!=t&&!bd(t))&&!(t=di(t))&&L(e)?Ai(Q(e),0,r):e.split(t,r)):[]}function pc(e,t,r){return e=Ss(e),r=null==r?0:en(bs(r),0,e.length),t=di(t),e.slice(r,r+t.length)==t}function yc(e,t,n){var i=r.templateSettings;n&&xo(e,t,n)&&(t=re),e=Ss(e),t=Dd({},t,i,uo);var o,a,u=Dd({},t.imports,i.imports,uo),s=Ns(u),c=x(u,s),l=0,f=t.interpolate||$t,d="__p += '",h=al((t.escape||$t).source+"|"+f.source+"|"+(f===Pt?Lt:$t).source+"|"+(t.evaluate||$t).source+"|$","g"),p="//# sourceURL="+(pl.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++gr+"]")+"\n";e.replace(h,function(t,r,n,i,u,s){return n||(n=i),d+=e.slice(l,s).replace(Kt,N),r&&(o=!0,d+="' +\n__e("+r+") +\n'"),u&&(a=!0,d+="';\n"+u+";\n__p += '"),n&&(d+="' +\n((__t = ("+n+")) == null ? '' : __t) +\n'"),l=s+t.length,t}),d+="';\n";var y=pl.call(t,"variable")&&t.variable;if(y){if(Nt.test(y))throw new rl(ae)}else d="with (obj) {\n"+d+"\n}\n";d=(a?d.replace(vt,""):d).replace(_t,"$1").replace(gt,"$1;"),d="function("+(y||"obj")+") {\n"+(y?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var m=Kd(function(){return nl(s,p+"return "+d).apply(re,c)});if(m.source=d,Qu(m))throw m;return m}function mc(e){return Ss(e).toLowerCase()}function vc(e){return Ss(e).toUpperCase()}function _c(e,t,r){if((e=Ss(e))&&(r||t===re))return F(e);if(!e||!(t=di(t)))return e;var n=Q(e),i=Q(t);return Ai(n,M(n,i),R(n,i)+1).join("")}function gc(e,t,r){if((e=Ss(e))&&(r||t===re))return e.slice(0,X(e)+1);if(!e||!(t=di(t)))return e;var n=Q(e);return Ai(n,0,R(n,Q(t))+1).join("")}function bc(e,t,r){if((e=Ss(e))&&(r||t===re))return e.replace(jt,"");if(!e||!(t=di(t)))return e;var n=Q(e);return Ai(n,M(n,Q(t))).join("")}function wc(e,t){var r=Se,n=Pe;if(rs(t)){var i="separator"in t?t.separator:i;r="length"in t?bs(t.length):r,n="omission"in t?di(t.omission):n}e=Ss(e);var o=e.length;if(L(e)){var a=Q(e);o=a.length}if(r>=o)return e;var u=r-J(n);if(u<1)return n;var s=a?Ai(a,0,u).join(""):e.slice(0,u);if(i===re)return s+n;if(a&&(u+=s.length-u),bd(i)){if(e.slice(u).search(i)){var c,l=s;for(i.global||(i=al(i.source,Ss(zt.exec(i))+"g")),i.lastIndex=0;c=i.exec(l);)var f=c.index;s=s.slice(0,f===re?u:f)}}else if(e.indexOf(di(i),u)!=u){var d=s.lastIndexOf(i);d>-1&&(s=s.slice(0,d))}return s+n}function Ec(e){return e=Ss(e),e&&Et.test(e)?e.replace(bt,Hr):e}function Ac(e,t,r){return e=Ss(e),t=r?re:t,t===re?z(e)?te(e):v(e):e.match(t)||[]}function Oc(e){var t=null==e?0:e.length,r=go();return e=t?f(e,function(e){if("function"!=typeof e[1])throw new sl(oe);return[r(e[0]),e[1]]}):[],ti(function(r){for(var i=-1;++ije)return[];var r=Me,n=Vl(e,Me);t=go(t),e-=Me;for(var i=k(n,t);++r1?e[t-1]:re;return r="function"==typeof r?(e.pop(),r):re,Ha(e,r)}),$f=po(function(e){var t=e.length,r=t?e[0]:0,n=this.__wrapped__,i=function(t){return Zr(t,e)};return!(t>1||this.__actions__.length)&&n instanceof $&&jo(r)?(n=n.slice(r,+r+(t?1:0)),n.__actions__.push({func:Ja,args:[i],thisArg:re}),new S(n,this.__chain__).thru(function(e){return t&&!e.length&&e.push(re),e})):this.thru(i)}),Kf=Ni(function(e,t,r){pl.call(e,r)?++e[r]:Xr(e,r,1)}),Jf=Yi(ca),Qf=Yi(la),Xf=Ni(function(e,t,r){pl.call(e,r)?e[r].push(t):Xr(e,r,[t])}),Zf=ti(function(e,t,r){var i=-1,o="function"==typeof t,a=Vu(e)?el(e.length):[];return hf(e,function(e){a[++i]=o?n(t,e,r):On(e,t,r)}),a}),ed=Ni(function(e,t,r){Xr(e,r,t)}),td=Ni(function(e,t,r){e[r?0:1].push(t)},function(){return[[],[]]}),rd=ti(function(e,t){if(null==e)return[];var r=t.length;return r>1&&xo(e,t[0],t[1])?t=[]:r>2&&xo(t[0],t[1],t[2])&&(t=[t[0]]),Wn(e,fn(t,1),[])}),nd=Bl||function(){return Tr.Date.now()},id=ti(function(e,t,r){var n=ye;if(r.length){var i=H(r,_o(id));n|=be}return ao(e,n,t,r,i)}),od=ti(function(e,t,r){var n=ye|me;if(r.length){var i=H(r,_o(od));n|=be}return ao(t,n,e,r,i)}),ad=ti(function(e,t){return on(e,1,t)}),ud=ti(function(e,t,r){return on(e,Es(t)||0,r)});ku.Cache=ur;var sd=gf(function(e,t){t=1==t.length&&yd(t[0])?f(t[0],j(go())):f(fn(t,1),j(go()));var r=t.length;return ti(function(i){for(var o=-1,a=Vl(i.length,r);++o=t}),pd=Sn(function(){return arguments}())?Sn:function(e){return ns(e)&&pl.call(e,"callee")&&!Dl.call(e,"callee")},yd=el.isArray,md=Rr?j(Rr):Pn,vd=Ul||Uc,_d=Ir?j(Ir):Dn,gd=Nr?j(Nr):Tn,bd=Ur?j(Ur):xn,wd=Lr?j(Lr):Bn,Ed=zr?j(zr):Mn,Ad=ro(Un),Od=ro(function(e,t){return e<=t}),Sd=Ui(function(e,t){if(No(t)||Vu(t))return void Mi(t,Ns(t),e);for(var r in t)pl.call(t,r)&&Yr(e,r,t[r])}),Pd=Ui(function(e,t){Mi(t,Us(t),e)}),Dd=Ui(function(e,t,r,n){Mi(t,Us(t),e,n)}),Cd=Ui(function(e,t,r,n){Mi(t,Ns(t),e,n)}),kd=po(Zr),Td=ti(function(e,t){e=ol(e);var r=-1,n=t.length,i=n>2?t[2]:re;for(i&&xo(t[0],t[1],i)&&(n=1);++r1),t}),Mi(e,mo(e),r),n&&(r=tn(r,le|fe|de,co));for(var i=t.length;i--;)pi(r,t[i]);return r}),Nd=po(function(e,t){return null==e?{}:Yn(e,t)}),Ud=oo(Ns),Ld=oo(Us),zd=Vi(function(e,t,r){return t=t.toLowerCase(),e+(r?rc(t):t)}),Gd=Vi(function(e,t,r){return e+(r?"-":"")+t.toLowerCase()}),qd=Vi(function(e,t,r){return e+(r?" ":"")+t.toLowerCase()}),Vd=qi("toLowerCase"),Hd=Vi(function(e,t,r){return e+(r?"_":"")+t.toLowerCase()}),Wd=Vi(function(e,t,r){return e+(r?" ":"")+$d(t)}),Yd=Vi(function(e,t,r){return e+(r?" ":"")+t.toUpperCase()}),$d=qi("toUpperCase"),Kd=ti(function(e,t){try{return n(e,re,t)}catch(e){return Qu(e)?e:new rl(e)}}),Jd=po(function(e,t){return o(t,function(t){t=Qo(t),Xr(e,t,id(e[t],e))}),e}),Qd=$i(),Xd=$i(!0),Zd=ti(function(e,t){return function(r){return On(r,e,t)}}),eh=ti(function(e,t){return function(r){return On(e,r,t)}}),th=Xi(f),rh=Xi(u),nh=Xi(y),ih=to(),oh=to(!0),ah=Qi(function(e,t){return e+t},0),uh=io("ceil"),sh=Qi(function(e,t){return e/t},1),ch=io("floor"),lh=Qi(function(e,t){return e*t},1),fh=io("round"),dh=Qi(function(e,t){return e-t},0);return r.after=Eu,r.ary=Au,r.assign=Sd,r.assignIn=Pd,r.assignInWith=Dd,r.assignWith=Cd,r.at=kd,r.before=Ou,r.bind=id,r.bindAll=Jd,r.bindKey=od,r.castArray=Iu,r.chain=$a,r.chunk=ta,r.compact=ra,r.concat=na,r.cond=Oc,r.conforms=Sc,r.constant=Pc,r.countBy=Kf,r.create=Ps,r.curry=Su,r.curryRight=Pu,r.debounce=Du,r.defaults=Td,r.defaultsDeep=Fd,r.defer=ad,r.delay=ud,r.difference=Ff,r.differenceBy=jf,r.differenceWith=xf,r.drop=ia,r.dropRight=oa,r.dropRightWhile=aa,r.dropWhile=ua,r.fill=sa,r.filter=ou,r.flatMap=au,r.flatMapDeep=uu,r.flatMapDepth=su,r.flatten=fa,r.flattenDeep=da,r.flattenDepth=ha,r.flip=Cu,r.flow=Qd,r.flowRight=Xd,r.fromPairs=pa,r.functions=xs,r.functionsIn=Bs,r.groupBy=Xf,r.initial=va,r.intersection=Bf,r.intersectionBy=Mf,r.intersectionWith=Rf,r.invert=jd,r.invertBy=xd,r.invokeMap=Zf,r.iteratee=kc,r.keyBy=ed,r.keys=Ns,r.keysIn=Us,r.map=du,r.mapKeys=Ls,r.mapValues=zs,r.matches=Tc,r.matchesProperty=Fc,r.memoize=ku,r.merge=Md,r.mergeWith=Rd,r.method=Zd,r.methodOf=eh,r.mixin=jc,r.negate=Tu,r.nthArg=Mc,r.omit=Id,r.omitBy=Gs,r.once=Fu,r.orderBy=hu,r.over=th,r.overArgs=sd,r.overEvery=rh,r.overSome=nh,r.partial=cd,r.partialRight=ld,r.partition=td,r.pick=Nd,r.pickBy=qs,r.property=Rc,r.propertyOf=Ic,r.pull=If,r.pullAll=Ea,r.pullAllBy=Aa,r.pullAllWith=Oa,r.pullAt=Nf,r.range=ih,r.rangeRight=oh,r.rearg=fd,r.reject=mu,r.remove=Sa,r.rest=ju,r.reverse=Pa,r.sampleSize=_u,r.set=Hs,r.setWith=Ws,r.shuffle=gu,r.slice=Da,r.sortBy=rd,r.sortedUniq=Ba,r.sortedUniqBy=Ma,r.split=hc,r.spread=xu,r.tail=Ra,r.take=Ia,r.takeRight=Na,r.takeRightWhile=Ua,r.takeWhile=La,r.tap=Ka,r.throttle=Bu,r.thru=Ja,r.toArray=_s,r.toPairs=Ud,r.toPairsIn=Ld,r.toPath=Vc,r.toPlainObject=As,r.transform=Ys,r.unary=Mu,r.union=Uf,r.unionBy=Lf,r.unionWith=zf,r.uniq=za,r.uniqBy=Ga,r.uniqWith=qa,r.unset=$s,r.unzip=Va,r.unzipWith=Ha,r.update=Ks,r.updateWith=Js,r.values=Qs,r.valuesIn=Xs,r.without=Gf,r.words=Ac,r.wrap=Ru,r.xor=qf,r.xorBy=Vf,r.xorWith=Hf,r.zip=Wf,r.zipObject=Wa,r.zipObjectDeep=Ya,r.zipWith=Yf,r.entries=Ud,r.entriesIn=Ld,r.extend=Pd,r.extendWith=Dd,jc(r,r),r.add=ah,r.attempt=Kd,r.camelCase=zd,r.capitalize=rc,r.ceil=uh,r.clamp=Zs,r.clone=Nu,r.cloneDeep=Lu,r.cloneDeepWith=zu,r.cloneWith=Uu,r.conformsTo=Gu, -r.deburr=nc,r.defaultTo=Dc,r.divide=sh,r.endsWith=ic,r.eq=qu,r.escape=oc,r.escapeRegExp=ac,r.every=iu,r.find=Jf,r.findIndex=ca,r.findKey=Ds,r.findLast=Qf,r.findLastIndex=la,r.findLastKey=Cs,r.floor=ch,r.forEach=cu,r.forEachRight=lu,r.forIn=ks,r.forInRight=Ts,r.forOwn=Fs,r.forOwnRight=js,r.get=Ms,r.gt=dd,r.gte=hd,r.has=Rs,r.hasIn=Is,r.head=ya,r.identity=Cc,r.includes=fu,r.indexOf=ma,r.inRange=ec,r.invoke=Bd,r.isArguments=pd,r.isArray=yd,r.isArrayBuffer=md,r.isArrayLike=Vu,r.isArrayLikeObject=Hu,r.isBoolean=Wu,r.isBuffer=vd,r.isDate=_d,r.isElement=Yu,r.isEmpty=$u,r.isEqual=Ku,r.isEqualWith=Ju,r.isError=Qu,r.isFinite=Xu,r.isFunction=Zu,r.isInteger=es,r.isLength=ts,r.isMap=gd,r.isMatch=is,r.isMatchWith=os,r.isNaN=as,r.isNative=us,r.isNil=cs,r.isNull=ss,r.isNumber=ls,r.isObject=rs,r.isObjectLike=ns,r.isPlainObject=fs,r.isRegExp=bd,r.isSafeInteger=ds,r.isSet=wd,r.isString=hs,r.isSymbol=ps,r.isTypedArray=Ed,r.isUndefined=ys,r.isWeakMap=ms,r.isWeakSet=vs,r.join=_a,r.kebabCase=Gd,r.last=ga,r.lastIndexOf=ba,r.lowerCase=qd,r.lowerFirst=Vd,r.lt=Ad,r.lte=Od,r.max=Wc,r.maxBy=Yc,r.mean=$c,r.meanBy=Kc,r.min=Jc,r.minBy=Qc,r.stubArray=Nc,r.stubFalse=Uc,r.stubObject=Lc,r.stubString=zc,r.stubTrue=Gc,r.multiply=lh,r.nth=wa,r.noConflict=xc,r.noop=Bc,r.now=nd,r.pad=uc,r.padEnd=sc,r.padStart=cc,r.parseInt=lc,r.random=tc,r.reduce=pu,r.reduceRight=yu,r.repeat=fc,r.replace=dc,r.result=Vs,r.round=fh,r.runInContext=e,r.sample=vu,r.size=bu,r.snakeCase=Hd,r.some=wu,r.sortedIndex=Ca,r.sortedIndexBy=ka,r.sortedIndexOf=Ta,r.sortedLastIndex=Fa,r.sortedLastIndexBy=ja,r.sortedLastIndexOf=xa,r.startCase=Wd,r.startsWith=pc,r.subtract=dh,r.sum=Xc,r.sumBy=Zc,r.template=yc,r.times=qc,r.toFinite=gs,r.toInteger=bs,r.toLength=ws,r.toLower=mc,r.toNumber=Es,r.toSafeInteger=Os,r.toString=Ss,r.toUpper=vc,r.trim=_c,r.trimEnd=gc,r.trimStart=bc,r.truncate=wc,r.unescape=Ec,r.uniqueId=Hc,r.upperCase=Yd,r.upperFirst=$d,r.each=cu,r.eachRight=lu,r.first=ya,jc(r,function(){var e={};return dn(r,function(t,n){pl.call(r.prototype,n)||(e[n]=t)}),e}(),{chain:!1}),r.VERSION="4.17.21",o(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){r[e].placeholder=r}),o(["drop","take"],function(e,t){$.prototype[e]=function(r){r=r===re?1:ql(bs(r),0);var n=this.__filtered__&&!t?new $(this):this.clone();return n.__filtered__?n.__takeCount__=Vl(r,n.__takeCount__):n.__views__.push({size:Vl(r,Me),type:e+(n.__dir__<0?"Right":"")}),n},$.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),o(["filter","map","takeWhile"],function(e,t){var r=t+1,n=r==ke||3==r;$.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:go(e,3),type:r}),t.__filtered__=t.__filtered__||n,t}}),o(["head","last"],function(e,t){var r="take"+(t?"Right":"");$.prototype[e]=function(){return this[r](1).value()[0]}}),o(["initial","tail"],function(e,t){var r="drop"+(t?"":"Right");$.prototype[e]=function(){return this.__filtered__?new $(this):this[r](1)}}),$.prototype.compact=function(){return this.filter(Cc)},$.prototype.find=function(e){return this.filter(e).head()},$.prototype.findLast=function(e){return this.reverse().find(e)},$.prototype.invokeMap=ti(function(e,t){return"function"==typeof e?new $(this):this.map(function(r){return On(r,e,t)})}),$.prototype.reject=function(e){return this.filter(Tu(go(e)))},$.prototype.slice=function(e,t){e=bs(e);var r=this;return r.__filtered__&&(e>0||t<0)?new $(r):(e<0?r=r.takeRight(-e):e&&(r=r.drop(e)),t!==re&&(t=bs(t),r=t<0?r.dropRight(-t):r.take(t-e)),r)},$.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},$.prototype.toArray=function(){return this.take(Me)},dn($.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),o=r[i?"take"+("last"==t?"Right":""):t],a=i||/^find/.test(t);o&&(r.prototype[t]=function(){var t=this.__wrapped__,u=i?[1]:arguments,s=t instanceof $,c=u[0],l=s||yd(t),f=function(e){var t=o.apply(r,d([e],u));return i&&h?t[0]:t};l&&n&&"function"==typeof c&&1!=c.length&&(s=l=!1);var h=this.__chain__,p=!!this.__actions__.length,y=a&&!h,m=s&&!p;if(!a&&l){t=m?t:new $(this);var v=e.apply(t,u);return v.__actions__.push({func:Ja,args:[f],thisArg:re}),new S(v,h)}return y&&m?e.apply(this,u):(v=this.thru(f),y?i?v.value()[0]:v.value():v)})}),o(["pop","push","shift","sort","splice","unshift"],function(e){var t=cl[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);r.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(yd(r)?r:[],e)}return this[n](function(r){return t.apply(yd(r)?r:[],e)})}}),dn($.prototype,function(e,t){var n=r[t];if(n){var i=n.name+"";pl.call(rf,i)||(rf[i]=[]),rf[i].push({name:t,func:n})}}),rf[Ki(re,me).name]=[{name:"wrapper",func:re}],$.prototype.clone=Z,$.prototype.reverse=ee,$.prototype.value=xt,r.prototype.at=$f,r.prototype.chain=Qa,r.prototype.commit=Xa,r.prototype.next=Za,r.prototype.plant=tu,r.prototype.reverse=ru,r.prototype.toJSON=r.prototype.valueOf=r.prototype.value=nu,r.prototype.first=r.prototype.head,Tl&&(r.prototype[Tl]=eu),r}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Tr._=Wr,define(function(){return Wr})):jr?((jr.exports=Wr)._=Wr,Fr._=Wr):Tr._=Wr}).call(this)}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],112:[function(e,t,r){!function(e){function r(e,t){if("object"!==i(e))return t;for(var n in t)"object"===i(e[n])&&"object"===i(t[n])?e[n]=r(e[n],t[n]):e[n]=t[n];return e}function n(e,t,n){var a=n[0],u=n.length;(e||"object"!==i(a))&&(a={});for(var s=0;s0)for(r=0;r=0?r?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+n}function k(e,t,r,n){var i=n;"string"==typeof n&&(i=function(){return this[n]()}),e&&(di[e]=i),t&&(di[t[0]]=function(){return C(i.apply(this,arguments),t[1],t[2])}),r&&(di[r]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function T(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function F(e){var t,r,n=e.match(ci);for(t=0,r=n.length;t=0&&li.test(e);)e=e.replace(li,r),li.lastIndex=0,n-=1;return e}function B(e){var t=this._longDateFormat[e],r=this._longDateFormat[e.toUpperCase()];return t||!r?t:(this._longDateFormat[e]=r.match(ci).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])}function M(){return this._invalidDate}function R(e){return this._ordinal.replace("%d",e)}function I(e,t,r,n){var i=this._relativeTime[r];return A(i)?i(e,t,r,n):i.replace(/%d/i,e)}function N(e,t){var r=this._relativeTime[e>0?"future":"past"];return A(r)?r(t):r.replace(/%s/i,t)}function U(e,t){var r=e.toLowerCase();mi[r]=mi[r+"s"]=mi[t]=e}function L(e){return"string"==typeof e?mi[e]||mi[e.toLowerCase()]:void 0}function z(e){var t,r,n={};for(r in e)o(e,r)&&(t=L(r))&&(n[t]=e[r]);return n}function G(e,t){vi[e]=t}function q(e){var t,r=[];for(t in e)o(e,t)&&r.push({unit:t,priority:vi[t]});return r.sort(function(e,t){return e.priority-t.priority}),r}function V(e){return e%4==0&&e%100!=0||e%400==0}function H(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function W(e){var t=+e,r=0;return 0!==t&&isFinite(t)&&(r=H(t)),r}function Y(e,t){return function(n){return null!=n?(K(this,e,n),r.updateOffset(this,t),this):$(this,e)}}function $(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function K(e,t,r){e.isValid()&&!isNaN(r)&&("FullYear"===t&&V(e.year())&&1===e.month()&&29===e.date()?(r=W(r),e._d["set"+(e._isUTC?"UTC":"")+t](r,e.month(),ae(r,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](r))}function J(e){return e=L(e),A(this[e])?this[e]():this}function Q(e,t){if("object"==typeof e){e=z(e);var r,n=q(e);for(r=0;r=0?(u=new Date(e+400,t,r,n,i,o,a),isFinite(u.getFullYear())&&u.setFullYear(e)):u=new Date(e,t,r,n,i,o,a),u}function be(e){var t,r;return e<100&&e>=0?(r=Array.prototype.slice.call(arguments),r[0]=e+400,t=new Date(Date.UTC.apply(null,r)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function we(e,t,r){var n=7+t-r;return-(7+be(e,0,n).getUTCDay()-t)%7+n-1}function Ee(e,t,r,n,i){var o,a,u=(7+r-n)%7,s=we(e,n,i),c=1+7*(t-1)+u+s;return c<=0?(o=e-1,a=ve(o)+c):c>ve(e)?(o=e+1,a=c-ve(e)):(o=e,a=c),{year:o,dayOfYear:a}}function Ae(e,t,r){var n,i,o=we(e.year(),t,r),a=Math.floor((e.dayOfYear()-o-1)/7)+1;return a<1?(i=e.year()-1,n=a+Oe(i,t,r)):a>Oe(e.year(),t,r)?(n=a-Oe(e.year(),t,r),i=e.year()+1):(i=e.year(),n=a),{week:n,year:i}}function Oe(e,t,r){var n=we(e,t,r),i=we(e+1,t,r);return(ve(e)-n+i)/7}function Se(e){return Ae(e,this._week.dow,this._week.doy).week}function Pe(){return this._week.dow}function De(){return this._week.doy}function Ce(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function ke(e){var t=Ae(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Te(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function Fe(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}function xe(e,t){var r=n(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?je(r,this._week.dow):e?r[e.day()]:r}function Be(e){return!0===e?je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Me(e){return!0===e?je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Re(e,t,r){var n,i,o,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)o=d([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(o,"").toLocaleLowerCase();return r?"dddd"===t?(i=Mi.call(this._weekdaysParse,a),-1!==i?i:null):"ddd"===t?(i=Mi.call(this._shortWeekdaysParse,a),-1!==i?i:null):(i=Mi.call(this._minWeekdaysParse,a),-1!==i?i:null):"dddd"===t?-1!==(i=Mi.call(this._weekdaysParse,a))?i:-1!==(i=Mi.call(this._shortWeekdaysParse,a))?i:(i=Mi.call(this._minWeekdaysParse,a),-1!==i?i:null):"ddd"===t?-1!==(i=Mi.call(this._shortWeekdaysParse,a))?i:-1!==(i=Mi.call(this._weekdaysParse,a))?i:(i=Mi.call(this._minWeekdaysParse,a),-1!==i?i:null):-1!==(i=Mi.call(this._minWeekdaysParse,a))?i:-1!==(i=Mi.call(this._weekdaysParse,a))?i:(i=Mi.call(this._shortWeekdaysParse,a),-1!==i?i:null)}function Ie(e,t,r){var n,i,o;if(this._weekdaysParseExact)return Re.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(i=d([2e3,1]).day(n),r&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[n]=new RegExp(o.replace(".",""),"i")),r&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(r&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(r&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!r&&this._weekdaysParse[n].test(e))return n}}function Ne(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Te(e,this.localeData()),this.add(e-t,"d")):t}function Ue(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Le(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Fe(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function ze(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=ro),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ge(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=no),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function qe(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=io),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ve(){function e(e,t){return t.length-e.length}var t,r,n,i,o,a=[],u=[],s=[],c=[];for(t=0;t<7;t++)r=d([2e3,1]).day(t),n=te(this.weekdaysMin(r,"")),i=te(this.weekdaysShort(r,"")),o=te(this.weekdays(r,"")),a.push(n),u.push(i),s.push(o),c.push(n),c.push(i),c.push(o);a.sort(e),u.sort(e),s.sort(e),c.sort(e),this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function He(){return this.hours()%12||12}function We(){return this.hours()||24}function Ye(e,t){k(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function $e(e,t){return t._meridiemParse}function Ke(e){return"p"===(e+"").toLowerCase().charAt(0)}function Je(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"}function Qe(e,t){var r,n=Math.min(e.length,t.length);for(r=0;r0;){if(n=et(i.slice(0,t).join("-")))return n;if(r&&r.length>=t&&Qe(i,r)>=t-1)break;t--}o++}return oo}function et(r){var n,i=null;if(void 0===co[r]&&void 0!==t&&t&&t.exports)try{i=oo._abbr,n=e,n("./locale/"+r),tt(i)}catch(e){co[r]=null}return co[r]}function tt(e,t){var r;return e&&(r=u(t)?it(e):rt(e,t),r?oo=r:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),oo._abbr}function rt(e,t){if(null!==t){var r,n=so;if(t.abbr=e,null!=co[e])E("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=co[e]._config;else if(null!=t.parentLocale)if(null!=co[t.parentLocale])n=co[t.parentLocale]._config;else{if(null==(r=et(t.parentLocale)))return lo[t.parentLocale]||(lo[t.parentLocale]=[]),lo[t.parentLocale].push({name:e,config:t}),null;n=r._config}return co[e]=new P(S(n,t)),lo[e]&&lo[e].forEach(function(e){rt(e.name,e.config)}),tt(e),co[e]}return delete co[e],null}function nt(e,t){if(null!=t){var r,n,i=so;null!=co[e]&&null!=co[e].parentLocale?co[e].set(S(co[e]._config,t)):(n=et(e),null!=n&&(i=n._config),t=S(i,t),null==n&&(t.abbr=e),r=new P(t),r.parentLocale=co[e],co[e]=r),tt(e)}else null!=co[e]&&(null!=co[e].parentLocale?(co[e]=co[e].parentLocale,e===tt()&&tt(e)):null!=co[e]&&delete co[e]);return co[e]}function it(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return oo;if(!n(e)){if(t=et(e))return t;e=[e]}return Ze(e)}function ot(){return ai(co)}function at(e){var t,r=e._a;return r&&-2===p(e).overflow&&(t=r[Ni]<0||r[Ni]>11?Ni:r[Ui]<1||r[Ui]>ae(r[Ii],r[Ni])?Ui:r[Li]<0||r[Li]>24||24===r[Li]&&(0!==r[zi]||0!==r[Gi]||0!==r[qi])?Li:r[zi]<0||r[zi]>59?zi:r[Gi]<0||r[Gi]>59?Gi:r[qi]<0||r[qi]>999?qi:-1,p(e)._overflowDayOfYear&&(tUi)&&(t=Ui),p(e)._overflowWeeks&&-1===t&&(t=Vi),p(e)._overflowWeekday&&-1===t&&(t=Hi),p(e).overflow=t),e}function ut(e){var t,r,n,i,o,a,u=e._i,s=fo.exec(u)||ho.exec(u);if(s){for(p(e).iso=!0,t=0,r=yo.length;tve(o)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),r=be(o,0,e._dayOfYear),e._a[Ni]=r.getUTCMonth(),e._a[Ui]=r.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=n[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Li]&&0===e._a[zi]&&0===e._a[Gi]&&0===e._a[qi]&&(e._nextDay=!0,e._a[Li]=0),e._d=(e._useUTC?be:ge).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Li]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(p(e).weekdayMismatch=!0)}}function _t(e){var t,r,n,i,o,a,u,s,c;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(o=1,a=4,r=yt(t.GG,e._a[Ii],Ae(Dt(),1,4).year),n=yt(t.W,1),((i=yt(t.E,1))<1||i>7)&&(s=!0)):(o=e._locale._week.dow,a=e._locale._week.doy,c=Ae(Dt(),o,a),r=yt(t.gg,e._a[Ii],c.year),n=yt(t.w,c.week),null!=t.d?((i=t.d)<0||i>6)&&(s=!0):null!=t.e?(i=t.e+o,(t.e<0||t.e>6)&&(s=!0)):i=o),n<1||n>Oe(r,o,a)?p(e)._overflowWeeks=!0:null!=s?p(e)._overflowWeekday=!0:(u=Ee(r,n,i,o,a),e._a[Ii]=u.year,e._dayOfYear=u.dayOfYear)}function gt(e){if(e._f===r.ISO_8601)return void ut(e);if(e._f===r.RFC_2822)return void ht(e);e._a=[],p(e).empty=!0;var t,n,i,o,a,u,s=""+e._i,c=s.length,l=0;for(i=x(e._f,e._locale).match(ci)||[],t=0;t0&&p(e).unusedInput.push(a),s=s.slice(s.indexOf(n)+n.length),l+=n.length),di[o]?(n?p(e).empty=!1:p(e).unusedTokens.push(o),ie(o,n,e)):e._strict&&!n&&p(e).unusedTokens.push(o);p(e).charsLeftOver=c-l,s.length>0&&p(e).unusedInput.push(s),e._a[Li]<=12&&!0===p(e).bigHour&&e._a[Li]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[Li]=bt(e._locale,e._a[Li],e._meridiem),u=p(e).era,null!==u&&(e._a[Ii]=e._locale.erasConvertYear(u,e._a[Ii])),vt(e),at(e)}function bt(e,t,r){var n;return null==r?t:null!=e.meridiemHour?e.meridiemHour(t,r):null!=e.isPM?(n=e.isPM(r),n&&t<12&&(t+=12),n||12!==t||(t=0),t):t}function wt(e){var t,r,n,i,o,a,u=!1;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Kt(){if(!u(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),t=Ot(t),t._a?(e=t._isUTC?d(t._a):Dt(t._a),this._isDSTShifted=this.isValid()&&It(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Jt(){return!!this.isValid()&&!this._isUTC}function Qt(){return!!this.isValid()&&this._isUTC}function Xt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Zt(e,t){var r,n,i,a=e,u=null;return Mt(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:s(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(u=So.exec(e))?(r="-"===u[1]?-1:1,a={y:0,d:W(u[Ui])*r,h:W(u[Li])*r,m:W(u[zi])*r,s:W(u[Gi])*r,ms:W(Rt(1e3*u[qi]))*r}):(u=Po.exec(e))?(r="-"===u[1]?-1:1,a={y:er(u[2],r),M:er(u[3],r),w:er(u[4],r),d:er(u[5],r),h:er(u[6],r),m:er(u[7],r),s:er(u[8],r)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(i=rr(Dt(a.from),Dt(a.to)),a={},a.ms=i.milliseconds,a.M=i.months),n=new Bt(a),Mt(e)&&o(e,"_locale")&&(n._locale=e._locale),Mt(e)&&o(e,"_isValid")&&(n._isValid=e._isValid),n}function er(e,t){var r=e&&parseFloat(e.replace(",","."));return(isNaN(r)?0:r)*t}function tr(e,t){var r={};return r.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(r.months,"M").isAfter(t)&&--r.months,r.milliseconds=+t-+e.clone().add(r.months,"M"),r}function rr(e,t){var r;return e.isValid()&&t.isValid()?(t=Lt(t,e),e.isBefore(t)?r=tr(e,t):(r=tr(t,e),r.milliseconds=-r.milliseconds,r.months=-r.months),r):{milliseconds:0,months:0}}function nr(e,t){return function(r,n){var i,o;return null===n||isNaN(+n)||(E(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=r,r=n,n=o),i=Zt(r,n),ir(this,i,e),this}}function ir(e,t,n,i){var o=t._milliseconds,a=Rt(t._days),u=Rt(t._months);e.isValid()&&(i=null==i||i,u&&fe(e,$(e,"Month")+u*n),a&&K(e,"Date",$(e,"Date")+a*n),o&&e._d.setTime(e._d.valueOf()+o*n),i&&r.updateOffset(e,a||u))}function or(e){return"string"==typeof e||e instanceof String}function ar(e){return g(e)||c(e)||or(e)||s(e)||sr(e)||ur(e)||null===e||void 0===e}function ur(e){var t,r,n=i(e)&&!a(e),u=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;tr.valueOf():r.valueOf()9999?j(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",j(r,"Z")):j(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Ar(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,r,n,i="moment",o="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",o="Z"),e="["+i+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r="-MM-DD[T]HH:mm:ss.SSS",n=o+'[")]',this.format(e+t+r+n)}function Or(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=j(this,e);return this.localeData().postformat(t)}function Sr(e,t){return this.isValid()&&(g(e)&&e.isValid()||Dt(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Pr(e){return this.from(Dt(),e)}function Dr(e,t){return this.isValid()&&(g(e)&&e.isValid()||Dt(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Cr(e){return this.to(Dt(),e)}function kr(e){var t;return void 0===e?this._locale._abbr:(t=it(e),null!=t&&(this._locale=t),this)}function Tr(){return this._locale}function Fr(e,t){return(e%t+t)%t}function jr(e,t,r){return e<100&&e>=0?new Date(e+400,t,r)-xo:new Date(e,t,r).valueOf()}function xr(e,t,r){return e<100&&e>=0?Date.UTC(e+400,t,r)-xo:Date.UTC(e,t,r)}function Br(e){var t,n;if(void 0===(e=L(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?xr:jr,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Fr(t+(this._isUTC?0:this.utcOffset()*Fo),jo);break;case"minute":t=this._d.valueOf(),t-=Fr(t,Fo);break;case"second":t=this._d.valueOf(),t-=Fr(t,To)}return this._d.setTime(t),r.updateOffset(this,!0),this}function Mr(e){var t,n;if(void 0===(e=L(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?xr:jr,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=jo-Fr(t+(this._isUTC?0:this.utcOffset()*Fo),jo)-1;break;case"minute":t=this._d.valueOf(),t+=Fo-Fr(t,Fo)-1;break;case"second":t=this._d.valueOf(),t+=To-Fr(t,To)-1}return this._d.setTime(t),r.updateOffset(this,!0),this}function Rr(){return this._d.valueOf()-6e4*(this._offset||0)}function Ir(){return Math.floor(this.valueOf()/1e3)}function Nr(){return new Date(this.valueOf())}function Ur(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Lr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function zr(){return this.isValid()?this.toISOString():null}function Gr(){return y(this)}function qr(){return f({},p(this))}function Vr(){return p(this).overflow}function Hr(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Wr(e,t){var n,i,o,a=this._eras||it("en")._eras;for(n=0,i=a.length;n=0)return s[n]}function $r(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n}function Kr(){var e,t,r,n=this.localeData().eras();for(e=0,t=n.length;eo&&(t=o),mn.call(this,e,t,r,n,i))}function mn(e,t,r,n,i){var o=Ee(e,t,r,n,i),a=be(o.year,0,o.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}function vn(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function _n(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function gn(e,t){t[qi]=W(1e3*("0."+e))}function bn(){return this._isUTC?"UTC":""}function wn(){return this._isUTC?"Coordinated Universal Time":""}function En(e){return Dt(1e3*e)}function An(){return Dt.apply(null,arguments).parseZone()}function On(e){return e}function Sn(e,t,r,n){var i=it(),o=d().set(n,t);return i[r](o,e)}function Pn(e,t,r){if(s(e)&&(t=e,e=void 0),e=e||"",null!=t)return Sn(e,t,r,"month");var n,i=[];for(n=0;n<12;n++)i[n]=Sn(e,n,r,"month");return i}function Dn(e,t,r,n){"boolean"==typeof e?(s(t)&&(r=t,t=void 0),t=t||""):(t=e,r=t,e=!1,s(t)&&(r=t,t=void 0),t=t||"");var i,o=it(),a=e?o._week.dow:0,u=[];if(null!=r)return Sn(t,(r+a)%7,n,"day");for(i=0;i<7;i++)u[i]=Sn(t,(i+a)%7,n,"day");return u}function Cn(e,t){return Pn(e,t,"months")}function kn(e,t){return Pn(e,t,"monthsShort")}function Tn(e,t,r){return Dn(e,t,r,"weekdays")}function Fn(e,t,r){return Dn(e,t,r,"weekdaysShort")}function jn(e,t,r){return Dn(e,t,r,"weekdaysMin")}function xn(){var e=this._data;return this._milliseconds=zo(this._milliseconds),this._days=zo(this._days),this._months=zo(this._months),e.milliseconds=zo(e.milliseconds),e.seconds=zo(e.seconds),e.minutes=zo(e.minutes),e.hours=zo(e.hours),e.months=zo(e.months),e.years=zo(e.years),this}function Bn(e,t,r,n){var i=Zt(t,r);return e._milliseconds+=n*i._milliseconds,e._days+=n*i._days,e._months+=n*i._months,e._bubble()}function Mn(e,t){return Bn(this,e,t,1)}function Rn(e,t){return Bn(this,e,t,-1)}function In(e){return e<0?Math.floor(e):Math.ceil(e)}function Nn(){var e,t,r,n,i,o=this._milliseconds,a=this._days,u=this._months,s=this._data;return o>=0&&a>=0&&u>=0||o<=0&&a<=0&&u<=0||(o+=864e5*In(Ln(u)+a),a=0,u=0),s.milliseconds=o%1e3,e=H(o/1e3),s.seconds=e%60,t=H(e/60),s.minutes=t%60,r=H(t/60),s.hours=r%24,a+=H(r/24),i=H(Un(a)),u+=i,a-=In(Ln(i)),n=H(u/12),u%=12,s.days=a,s.months=u,s.years=n,this}function Un(e){return 4800*e/146097}function Ln(e){return 146097*e/4800}function zn(e){if(!this.isValid())return NaN;var t,r,n=this._milliseconds;if("month"===(e=L(e))||"quarter"===e||"year"===e)switch(t=this._days+n/864e5,r=this._months+Un(t),e){case"month":return r;case"quarter":return r/3;case"year":return r/12}else switch(t=this._days+Math.round(Ln(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}}function Gn(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*W(this._months/12):NaN}function qn(e){return function(){return this.as(e)}}function Vn(){return Zt(this)}function Hn(e){return e=L(e),this.isValid()?this[e+"s"]():NaN}function Wn(e){return function(){return this.isValid()?this._data[e]:NaN}}function Yn(){return H(this.days()/7)}function $n(e,t,r,n,i){return i.relativeTime(t||1,!!r,e,n)}function Kn(e,t,r,n){var i=Zt(e).abs(),o=ia(i.as("s")),a=ia(i.as("m")),u=ia(i.as("h")),s=ia(i.as("d")),c=ia(i.as("M")),l=ia(i.as("w")),f=ia(i.as("y")),d=o<=r.ss&&["s",o]||o0,d[4]=n,$n.apply(null,d)}function Jn(e){return void 0===e?ia:"function"==typeof e&&(ia=e,!0)}function Qn(e,t){return void 0!==oa[e]&&(void 0===t?oa[e]:(oa[e]=t,"s"===e&&(oa.ss=t-1),!0))}function Xn(e,t){if(!this.isValid())return this.localeData().invalidDate();var r,n,i=!1,o=oa;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(o=Object.assign({},oa,t),null!=t.s&&null==t.ss&&(o.ss=t.s-1)),r=this.localeData(),n=Kn(this,!i,o,r),i&&(n=r.pastFuture(+this,n)),r.postformat(n)}function Zn(e){return(e>0)-(e<0)||+e}function ei(){if(!this.isValid())return this.localeData().invalidDate();var e,t,r,n,i,o,a,u,s=aa(this._milliseconds)/1e3,c=aa(this._days),l=aa(this._months),f=this.asSeconds();return f?(e=H(s/60),t=H(e/60),s%=60,e%=60,r=H(l/12),l%=12,n=s?s.toFixed(3).replace(/\.?0+$/,""):"",i=f<0?"-":"",o=Zn(this._months)!==Zn(f)?"-":"",a=Zn(this._days)!==Zn(f)?"-":"",u=Zn(this._milliseconds)!==Zn(f)?"-":"",i+"P"+(r?o+r+"Y":"")+(l?o+l+"M":"")+(c?a+c+"D":"")+(t||e||s?"T":"")+(t?u+t+"H":"")+(e?u+e+"M":"")+(s?u+n+"S":"")):"P0D"}var ti,ri;ri=Array.prototype.some?Array.prototype.some:function(e){var t,r=Object(this),n=r.length>>>0;for(t=0;t68?1900:2e3)};var Qi=Y("FullYear",!0);k("w",["ww",2],"wo","week"),k("W",["WW",2],"Wo","isoWeek"),U("week","w"),U("isoWeek","W"),G("week",5),G("isoWeek",5),X("w",Ai),X("ww",Ai,gi),X("W",Ai),X("WW",Ai,gi),ne(["w","ww","W","WW"],function(e,t,r,n){t[n.substr(0,1)]=W(e)});var Xi={dow:0,doy:6};k("d",0,"do","day"),k("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),k("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),k("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),k("e",0,0,"weekday"),k("E",0,0,"isoWeekday"),U("day","d"),U("weekday","e"),U("isoWeekday","E"),G("day",11),G("weekday",11),G("isoWeekday",11),X("d",Ai),X("e",Ai),X("E",Ai),X("dd",function(e,t){return t.weekdaysMinRegex(e)}),X("ddd",function(e,t){return t.weekdaysShortRegex(e)}),X("dddd",function(e,t){return t.weekdaysRegex(e)}),ne(["dd","ddd","dddd"],function(e,t,r,n){var i=r._locale.weekdaysParse(e,n,r._strict);null!=i?t.d=i:p(r).invalidWeekday=e}),ne(["d","e","E"],function(e,t,r,n){t[n]=W(e)});var Zi="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),eo="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),to="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ro=Bi,no=Bi,io=Bi;k("H",["HH",2],0,"hour"),k("h",["hh",2],0,He),k("k",["kk",2],0,We),k("hmm",0,0,function(){return""+He.apply(this)+C(this.minutes(),2)}),k("hmmss",0,0,function(){return""+He.apply(this)+C(this.minutes(),2)+C(this.seconds(),2)}),k("Hmm",0,0,function(){return""+this.hours()+C(this.minutes(),2)}),k("Hmmss",0,0,function(){return""+this.hours()+C(this.minutes(),2)+C(this.seconds(),2)}),Ye("a",!0),Ye("A",!1),U("hour","h"),G("hour",13),X("a",$e),X("A",$e),X("H",Ai),X("h",Ai),X("k",Ai),X("HH",Ai,gi),X("hh",Ai,gi),X("kk",Ai,gi),X("hmm",Oi),X("hmmss",Si),X("Hmm",Oi),X("Hmmss",Si),re(["H","HH"],Li),re(["k","kk"],function(e,t,r){var n=W(e);t[Li]=24===n?0:n}),re(["a","A"],function(e,t,r){r._isPm=r._locale.isPM(e),r._meridiem=e}),re(["h","hh"],function(e,t,r){t[Li]=W(e),p(r).bigHour=!0}),re("hmm",function(e,t,r){var n=e.length-2;t[Li]=W(e.substr(0,n)),t[zi]=W(e.substr(n)),p(r).bigHour=!0}),re("hmmss",function(e,t,r){var n=e.length-4,i=e.length-2;t[Li]=W(e.substr(0,n)),t[zi]=W(e.substr(n,2)),t[Gi]=W(e.substr(i)),p(r).bigHour=!0}),re("Hmm",function(e,t,r){var n=e.length-2;t[Li]=W(e.substr(0,n)),t[zi]=W(e.substr(n))}),re("Hmmss",function(e,t,r){var n=e.length-4,i=e.length-2;t[Li]=W(e.substr(0,n)),t[zi]=W(e.substr(n,2)),t[Gi]=W(e.substr(i))});var oo,ao=/[ap]\.?m?\.?/i,uo=Y("Hours",!0),so={calendar:si,longDateFormat:hi,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:pi,relativeTime:yi,months:Wi,monthsShort:Yi,week:Xi,weekdays:Zi,weekdaysMin:to,weekdaysShort:eo,meridiemParse:ao},co={},lo={},fo=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ho=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,po=/Z|[+-]\d\d(?::?\d\d)?/,yo=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],mo=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],vo=/^\/?Date\((-?\d+)/i,_o=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,go={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};r.createFromInputFallback=w("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),r.ISO_8601=function(){},r.RFC_2822=function(){};var bo=w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Dt.apply(null,arguments);return this.isValid()&&e.isValid()?ethis?this:e:m()}),Eo=function(){return Date.now?Date.now():+new Date},Ao=["year","quarter","month","week","day","hour","minute","second","millisecond"];Nt("Z",":"),Nt("ZZ",""),X("Z",ji),X("ZZ",ji),re(["Z","ZZ"],function(e,t,r){r._useUTC=!0,r._tzm=Ut(ji,e)});var Oo=/([\+\-]|\d\d)/gi;r.updateOffset=function(){};var So=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Po=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Zt.fn=Bt.prototype,Zt.invalid=xt;var Do=nr(1,"add"),Co=nr(-1,"subtract");r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ko=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)}),To=1e3,Fo=60*To,jo=60*Fo,xo=3506328*jo;k("N",0,0,"eraAbbr"),k("NN",0,0,"eraAbbr"),k("NNN",0,0,"eraAbbr"),k("NNNN",0,0,"eraName"),k("NNNNN",0,0,"eraNarrow"),k("y",["y",1],"yo","eraYear"),k("y",["yy",2],0,"eraYear"),k("y",["yyy",3],0,"eraYear"),k("y",["yyyy",4],0,"eraYear"),X("N",rn),X("NN",rn),X("NNN",rn),X("NNNN",nn),X("NNNNN",on),re(["N","NN","NNN","NNNN","NNNNN"],function(e,t,r,n){var i=r._locale.erasParse(e,n,r._strict);i?p(r).era=i:p(r).invalidEra=e}),X("y",ki),X("yy",ki),X("yyy",ki),X("yyyy",ki),X("yo",an),re(["y","yy","yyy","yyyy"],Ii),re(["yo"],function(e,t,r,n){var i;r._locale._eraYearOrdinalRegex&&(i=e.match(r._locale._eraYearOrdinalRegex)),r._locale.eraYearOrdinalParse?t[Ii]=r._locale.eraYearOrdinalParse(e,i):t[Ii]=parseInt(e,10)}),k(0,["gg",2],0,function(){return this.weekYear()%100}),k(0,["GG",2],0,function(){return this.isoWeekYear()%100}),sn("gggg","weekYear"),sn("ggggg","weekYear"),sn("GGGG","isoWeekYear"),sn("GGGGG","isoWeekYear"),U("weekYear","gg"),U("isoWeekYear","GG"),G("weekYear",1),G("isoWeekYear",1),X("G",Ti),X("g",Ti),X("GG",Ai,gi),X("gg",Ai,gi),X("GGGG",Di,wi),X("gggg",Di,wi),X("GGGGG",Ci,Ei),X("ggggg",Ci,Ei),ne(["gggg","ggggg","GGGG","GGGGG"],function(e,t,r,n){t[n.substr(0,2)]=W(e)}),ne(["gg","GG"],function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)}),k("Q",0,"Qo","quarter"),U("quarter","Q"),G("quarter",7),X("Q",_i),re("Q",function(e,t){t[Ni]=3*(W(e)-1)}),k("D",["DD",2],"Do","date"),U("date","D"),G("date",9),X("D",Ai),X("DD",Ai,gi),X("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),re(["D","DD"],Ui),re("Do",function(e,t){t[Ui]=W(e.match(Ai)[0])});var Bo=Y("Date",!0);k("DDD",["DDDD",3],"DDDo","dayOfYear"),U("dayOfYear","DDD"),G("dayOfYear",4),X("DDD",Pi),X("DDDD",bi),re(["DDD","DDDD"],function(e,t,r){r._dayOfYear=W(e)}),k("m",["mm",2],0,"minute"),U("minute","m"),G("minute",14),X("m",Ai),X("mm",Ai,gi),re(["m","mm"],zi);var Mo=Y("Minutes",!1);k("s",["ss",2],0,"second"),U("second","s"),G("second",15),X("s",Ai),X("ss",Ai,gi),re(["s","ss"],Gi);var Ro=Y("Seconds",!1);k("S",0,0,function(){return~~(this.millisecond()/100)}),k(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),k(0,["SSS",3],0,"millisecond"),k(0,["SSSS",4],0,function(){return 10*this.millisecond()}),k(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),k(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),k(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),k(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),k(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),U("millisecond","ms"),G("millisecond",16),X("S",Pi,_i),X("SS",Pi,gi),X("SSS",Pi,bi);var Io,No;for(Io="SSSS";Io.length<=9;Io+="S")X(Io,ki);for(Io="S";Io.length<=9;Io+="S")re(Io,gn);No=Y("Milliseconds",!1),k("z",0,0,"zoneAbbr"),k("zz",0,0,"zoneName");var Uo=_.prototype;Uo.add=Do,Uo.calendar=fr,Uo.clone=dr,Uo.diff=gr,Uo.endOf=Mr,Uo.format=Or,Uo.from=Sr,Uo.fromNow=Pr,Uo.to=Dr,Uo.toNow=Cr,Uo.get=J,Uo.invalidAt=Vr,Uo.isAfter=hr,Uo.isBefore=pr,Uo.isBetween=yr,Uo.isSame=mr,Uo.isSameOrAfter=vr,Uo.isSameOrBefore=_r,Uo.isValid=Gr,Uo.lang=ko,Uo.locale=kr,Uo.localeData=Tr,Uo.max=wo,Uo.min=bo,Uo.parsingFlags=qr,Uo.set=Q,Uo.startOf=Br,Uo.subtract=Co,Uo.toArray=Ur,Uo.toObject=Lr,Uo.toDate=Nr,Uo.toISOString=Er,Uo.inspect=Ar,"undefined"!=typeof Symbol&&null!=Symbol.for&&(Uo[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Uo.toJSON=zr,Uo.toString=wr,Uo.unix=Ir,Uo.valueOf=Rr,Uo.creationData=Hr,Uo.eraName=Kr,Uo.eraNarrow=Jr,Uo.eraAbbr=Qr,Uo.eraYear=Xr,Uo.year=Qi,Uo.isLeapYear=_e,Uo.weekYear=cn,Uo.isoWeekYear=ln,Uo.quarter=Uo.quarters=vn,Uo.month=de,Uo.daysInMonth=he,Uo.week=Uo.weeks=Ce,Uo.isoWeek=Uo.isoWeeks=ke,Uo.weeksInYear=hn,Uo.weeksInWeekYear=pn,Uo.isoWeeksInYear=fn,Uo.isoWeeksInISOWeekYear=dn,Uo.date=Bo,Uo.day=Uo.days=Ne,Uo.weekday=Ue,Uo.isoWeekday=Le,Uo.dayOfYear=_n,Uo.hour=Uo.hours=uo,Uo.minute=Uo.minutes=Mo,Uo.second=Uo.seconds=Ro,Uo.millisecond=Uo.milliseconds=No,Uo.utcOffset=Gt,Uo.utc=Vt,Uo.local=Ht,Uo.parseZone=Wt,Uo.hasAlignedHourOffset=Yt,Uo.isDST=$t,Uo.isLocal=Jt,Uo.isUtcOffset=Qt,Uo.isUtc=Xt,Uo.isUTC=Xt,Uo.zoneAbbr=bn,Uo.zoneName=wn,Uo.dates=w("dates accessor is deprecated. Use date instead.",Bo),Uo.months=w("months accessor is deprecated. Use month instead",de),Uo.years=w("years accessor is deprecated. Use year instead",Qi),Uo.zone=w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",qt),Uo.isDSTShifted=w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Kt);var Lo=P.prototype;Lo.calendar=D,Lo.longDateFormat=B,Lo.invalidDate=M,Lo.ordinal=R,Lo.preparse=On,Lo.postformat=On,Lo.relativeTime=I,Lo.pastFuture=N,Lo.set=O,Lo.eras=Wr,Lo.erasParse=Yr,Lo.erasConvertYear=$r,Lo.erasAbbrRegex=en,Lo.erasNameRegex=Zr,Lo.erasNarrowRegex=tn,Lo.months=ue,Lo.monthsShort=se,Lo.monthsParse=le,Lo.monthsRegex=ye,Lo.monthsShortRegex=pe,Lo.week=Se,Lo.firstDayOfYear=De,Lo.firstDayOfWeek=Pe,Lo.weekdays=xe,Lo.weekdaysMin=Me,Lo.weekdaysShort=Be,Lo.weekdaysParse=Ie,Lo.weekdaysRegex=ze,Lo.weekdaysShortRegex=Ge,Lo.weekdaysMinRegex=qe,Lo.isPM=Ke,Lo.meridiem=Je,tt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1, -name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===W(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=w("moment.lang is deprecated. Use moment.locale instead.",tt),r.langData=w("moment.langData is deprecated. Use moment.localeData instead.",it);var zo=Math.abs,Go=qn("ms"),qo=qn("s"),Vo=qn("m"),Ho=qn("h"),Wo=qn("d"),Yo=qn("w"),$o=qn("M"),Ko=qn("Q"),Jo=qn("y"),Qo=Wn("milliseconds"),Xo=Wn("seconds"),Zo=Wn("minutes"),ea=Wn("hours"),ta=Wn("days"),ra=Wn("months"),na=Wn("years"),ia=Math.round,oa={ss:44,s:45,m:45,h:22,d:26,w:null,M:11},aa=Math.abs,ua=Bt.prototype;return ua.isValid=jt,ua.abs=xn,ua.add=Mn,ua.subtract=Rn,ua.as=zn,ua.asMilliseconds=Go,ua.asSeconds=qo,ua.asMinutes=Vo,ua.asHours=Ho,ua.asDays=Wo,ua.asWeeks=Yo,ua.asMonths=$o,ua.asQuarters=Ko,ua.asYears=Jo,ua.valueOf=Gn,ua._bubble=Nn,ua.clone=Vn,ua.get=Hn,ua.milliseconds=Qo,ua.seconds=Xo,ua.minutes=Zo,ua.hours=ea,ua.days=ta,ua.weeks=Yn,ua.months=ra,ua.years=na,ua.humanize=Xn,ua.toISOString=ei,ua.toString=ei,ua.toJSON=ei,ua.locale=kr,ua.localeData=Tr,ua.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ei),ua.lang=ko,k("X",0,0,"unix"),k("x",0,0,"valueOf"),X("x",Ti),X("X",xi),re("X",function(e,t,r){r._d=new Date(1e3*parseFloat(e))}),re("x",function(e,t,r){r._d=new Date(W(e))}),r.version="2.29.1",function(e){ti=e}(Dt),r.fn=Uo,r.min=kt,r.max=Tt,r.now=Eo,r.utc=d,r.unix=En,r.months=Cn,r.isDate=c,r.locale=tt,r.invalid=m,r.duration=Zt,r.isMoment=g,r.weekdays=Tn,r.parseZone=An,r.localeData=it,r.isDuration=Mt,r.monthsShort=kn,r.weekdaysMin=jn,r.defineLocale=rt,r.updateLocale=nt,r.locales=ot,r.weekdaysShort=Fn,r.normalizeUnits=L,r.relativeTimeRounding=Jn,r.relativeTimeThreshold=Qn,r.calendarFormat=lr,r.prototype=Uo,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r})},{}],114:[function(e,t,r){(function(e){function t(e,t){for(var r=0,n=e.length-1;n>=0;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function n(e){"string"!=typeof e&&(e+="");var t,r=0,n=-1,i=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!i){r=t+1;break}}else-1===n&&(i=!1,n=t+1);return-1===n?"":e.slice(r,n)}function i(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n=-1&&!n;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(r=a+"/"+r,n="/"===a.charAt(0))}return r=t(i(r.split("/"),function(e){return!!e}),!n).join("/"),(n?"/":"")+r||"."},r.normalize=function(e){var n=r.isAbsolute(e),a="/"===o(e,-1);return e=t(i(e.split("/"),function(e){return!!e}),!n).join("/"),e||n||(e="."),e&&a&&(e+="/"),(n?"/":"")+e},r.isAbsolute=function(e){return"/"===e.charAt(0)},r.join=function(){var e=Array.prototype.slice.call(arguments,0);return r.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},r.relative=function(e,t){function n(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=r.resolve(e).substr(1),t=r.resolve(t).substr(1);for(var i=n(e.split("/")),o=n(t.split("/")),a=Math.min(i.length,o.length),u=a,s=0;s=1;--o)if(47===(t=e.charCodeAt(o))){if(!i){n=o;break}}else i=!1;return-1===n?r?"/":".":r&&1===n?"/":e.slice(0,n)},r.basename=function(e,t){var r=n(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},r.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,n=-1,i=!0,o=0,a=e.length-1;a>=0;--a){var u=e.charCodeAt(a);if(47!==u)-1===n&&(i=!1,n=a+1),46===u?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!i){r=a+1;break}}return-1===t||-1===n||0===o||1===o&&t===n-1&&t===r+1?"":e.slice(t,n)};var o="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,e("FWaASH"))},{FWaASH:50}],115:[function(e,t,r){function n(e,t){for(var r,n=[],i=0,o=0,a="",u=t&&t.delimiter||"/";null!=(r=_.exec(e));){var l=r[0],f=r[1],d=r.index;if(a+=e.slice(o,d),o=d+l.length,f)a+=f[1];else{var h=e[o],p=r[2],y=r[3],m=r[4],v=r[5],g=r[6],b=r[7];a&&(n.push(a),a="");var w=null!=p&&null!=h&&h!==p,E="+"===g||"*"===g,A="?"===g||"*"===g,O=r[2]||u,S=m||v;n.push({name:y||i++,prefix:p||"",delimiter:O,optional:A,repeat:E,partial:w,asterisk:!!b,pattern:S?c(S):b?".*":"[^"+s(O)+"]+?"})}}return o0)){r.shift()()}},!0),function(e){r.push(e),window.postMessage("process-tick","*")}}return function(e){setTimeout(e,0)}}(),n.title="browser",n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],117:[function(e,t,r){(function(e){!function(e){"use strict";if("function"==typeof bootstrap)bootstrap("promise",e);else if("object"==typeof r&&"object"==typeof t)t.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeQ=e}else{if("undefined"==typeof window&&"undefined"==typeof self)throw new Error("This environment was not anticipated by Q. Please file a bug.");var n="undefined"!=typeof window?window:self,i=n.Q;n.Q=e(),n.Q.noConflict=function(){return n.Q=i,this}}}(function(){"use strict";function t(e){return function(){return Y.apply(e,arguments)}}function r(e){return e===Object(e)}function n(e){return"[object StopIteration]"===re(e)||e instanceof q}function i(e,t){if(z&&t.stack&&"object"==typeof e&&null!==e&&e.stack){for(var r=[],n=t;n;n=n.source)n.stack&&(!e.__minimumStackCounter__||e.__minimumStackCounter__>n.stackCounter)&&(Z(e,"__minimumStackCounter__",{value:n.stackCounter,configurable:!0}),r.unshift(n.stack));r.unshift(e.stack);var i=r.join("\n"+ne+"\n"),a=o(i);Z(e,"stack",{value:a,configurable:!0})}}function o(e){for(var t=e.split("\n"),r=[],n=0;n=V&&n<=ce}function c(){if(z)try{throw new Error}catch(n){var e=n.stack.split("\n"),t=e[0].indexOf("@")>0?e[1]:e[2],r=u(t);if(!r)return;return G=r[0],r[1]}}function l(e){return e instanceof p?e:_(e)?D(e):P(e)}function f(){function e(e){t=e,l.longStackSupport&&z&&(o.source=e),K(r,function(t,r){l.nextTick(function(){e.promiseDispatch.apply(e,r)})},void 0),r=void 0,n=void 0}var t,r=[],n=[],i=X(f.prototype),o=X(p.prototype);if(o.promiseDispatch=function(e,i,o){var a=$(arguments);r?(r.push(a),"when"===i&&o[1]&&n.push(o[1])):l.nextTick(function(){t.promiseDispatch.apply(t,a)})},o.valueOf=function(){if(r)return o;var e=m(t);return v(e)&&(t=e),e},o.inspect=function(){return t?t.inspect():{state:"pending"}},l.longStackSupport&&z)try{throw new Error}catch(e){o.stack=e.stack.substring(e.stack.indexOf("\n")+1),o.stackCounter=ie++}return i.promise=o,i.resolve=function(r){t||e(l(r))},i.fulfill=function(r){t||e(P(r))},i.reject=function(r){t||e(S(r))},i.notify=function(e){t||K(n,function(t,r){l.nextTick(function(){r(e)})},void 0)},i}function d(e){if("function"!=typeof e)throw new TypeError("resolver must be a function.");var t=f();try{e(t.resolve,t.reject,t.notify)}catch(e){t.reject(e)}return t.promise}function h(e){return d(function(t,r){for(var n=0,i=e.length;n=n)throw new TypeError}for(;r2?e.resolve($(arguments,1)):e.resolve(r)}},l.Promise=d,l.promise=d,d.race=h,d.all=M,d.reject=S,d.resolve=l,l.passByCopy=function(e){return e},p.prototype.passByCopy=function(){return this},l.join=function(e,t){return l(e).join(t)},p.prototype.join=function(e){return l([this,e]).spread(function(e,t){if(e===t)return e;throw new Error("Q can't join: not the same: "+e+" "+t)})},l.race=h,p.prototype.race=function(){return this.then(l.race)},l.makePromise=p,p.prototype.toString=function(){return"[object Promise]"},p.prototype.then=function(e,t,r){function n(t){try{return"function"==typeof e?e(t):t}catch(e){return S(e)}}function o(e){if("function"==typeof t){i(e,u);try{return t(e)}catch(e){return S(e)}}return S(e)}function a(e){return"function"==typeof r?r(e):e}var u=this,s=f(),c=!1;return l.nextTick(function(){u.promiseDispatch(function(e){c||(c=!0,s.resolve(n(e)))},"when",[function(e){c||(c=!0,s.resolve(o(e)))}])}),u.promiseDispatch(void 0,"when",[void 0,function(e){var t,r=!1;try{t=a(e)}catch(e){if(r=!0,!l.onerror)throw e;l.onerror(e)}r||s.notify(t)}]),s.promise},l.tap=function(e,t){return l(e).tap(t)},p.prototype.tap=function(e){return e=l(e),this.then(function(t){return e.fcall(t).thenResolve(t)})},l.when=y,p.prototype.thenResolve=function(e){return this.then(function(){return e})},l.thenResolve=function(e,t){return l(e).thenResolve(t)},p.prototype.thenReject=function(e){return this.then(function(){throw e})},l.thenReject=function(e,t){return l(e).thenReject(t)},l.nearer=m,l.isPromise=v,l.isPromiseAlike=_,l.isPending=g,p.prototype.isPending=function(){return"pending"===this.inspect().state},l.isFulfilled=b,p.prototype.isFulfilled=function(){return"fulfilled"===this.inspect().state},l.isRejected=w,p.prototype.isRejected=function(){return"rejected"===this.inspect().state};var oe=[],ae=[],ue=[],se=!0;l.resetUnhandledRejections=E,l.getUnhandledReasons=function(){return oe.slice()},l.stopUnhandledRejectionTracking=function(){E(),se=!1},E(),l.reject=S,l.fulfill=P,l.master=C,l.spread=k,p.prototype.spread=function(e,t){return this.all().then(function(t){return e.apply(void 0,t)},t)},l.async=T,l.spawn=F,l.return=j,l.promised=x,l.dispatch=B,p.prototype.dispatch=function(e,t){var r=this,n=f();return l.nextTick(function(){r.promiseDispatch(n.resolve,e,t)}),n.promise},l.get=function(e,t){return l(e).dispatch("get",[t])},p.prototype.get=function(e){return this.dispatch("get",[e])},l.set=function(e,t,r){return l(e).dispatch("set",[t,r])},p.prototype.set=function(e,t){return this.dispatch("set",[e,t])},l.del=l.delete=function(e,t){return l(e).dispatch("delete",[t])},p.prototype.del=p.prototype.delete=function(e){return this.dispatch("delete",[e])},l.mapply=l.post=function(e,t,r){return l(e).dispatch("post",[t,r])},p.prototype.mapply=p.prototype.post=function(e,t){return this.dispatch("post",[e,t])},l.send=l.mcall=l.invoke=function(e,t){return l(e).dispatch("post",[t,$(arguments,2)])},p.prototype.send=p.prototype.mcall=p.prototype.invoke=function(e){return this.dispatch("post",[e,$(arguments,1)])},l.fapply=function(e,t){return l(e).dispatch("apply",[void 0,t])},p.prototype.fapply=function(e){return this.dispatch("apply",[void 0,e])},l.try=l.fcall=function(e){return l(e).dispatch("apply",[void 0,$(arguments,1)])},p.prototype.fcall=function(){return this.dispatch("apply",[void 0,$(arguments)])},l.fbind=function(e){var t=l(e),r=$(arguments,1);return function(){return t.dispatch("apply",[this,r.concat($(arguments))])}},p.prototype.fbind=function(){var e=this,t=$(arguments);return function(){return e.dispatch("apply",[this,t.concat($(arguments))])}},l.keys=function(e){return l(e).dispatch("keys",[])},p.prototype.keys=function(){return this.dispatch("keys",[])},l.all=M,p.prototype.all=function(){return M(this)},l.any=R,p.prototype.any=function(){return R(this)},l.allResolved=function(e,t,r){return function(){return"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(t+" is deprecated, use "+r+" instead.",new Error("").stack),e.apply(e,arguments)}}(I,"allResolved","allSettled"),p.prototype.allResolved=function(){return I(this)},l.allSettled=N,p.prototype.allSettled=function(){return this.then(function(e){return M(Q(e,function(e){function t(){return e.inspect()}return e=l(e),e.then(t,t)}))})},l.fail=l.catch=function(e,t){return l(e).then(void 0,t)},p.prototype.fail=p.prototype.catch=function(e){return this.then(void 0,e)},l.progress=U,p.prototype.progress=function(e){return this.then(void 0,void 0,e)},l.fin=l.finally=function(e,t){return l(e).finally(t)},p.prototype.fin=p.prototype.finally=function(e){if(!e||"function"!=typeof e.apply)throw new Error("Q can't apply finally callback");return e=l(e),this.then(function(t){return e.fcall().then(function(){return t})},function(t){return e.fcall().then(function(){throw t})})},l.done=function(e,t,r,n){return l(e).done(t,r,n)},p.prototype.done=function(t,r,n){var o=function(e){l.nextTick(function(){if(i(e,a),!l.onerror)throw e;l.onerror(e)})},a=t||r||n?this.then(t,r,n):this;"object"==typeof e&&e&&e.domain&&(o=e.domain.bind(o)),a.then(void 0,o)},l.timeout=function(e,t,r){return l(e).timeout(t,r)},p.prototype.timeout=function(e,t){var r=f(),n=setTimeout(function(){t&&"string"!=typeof t||(t=new Error(t||"Timed out after "+e+" ms"),t.code="ETIMEDOUT"),r.reject(t)},e);return this.then(function(e){clearTimeout(n),r.resolve(e)},function(e){clearTimeout(n),r.reject(e)},r.notify),r.promise},l.delay=function(e,t){return void 0===t&&(t=e,e=void 0),l(e).delay(t)},p.prototype.delay=function(e){return this.then(function(t){var r=f();return setTimeout(function(){r.resolve(t)},e),r.promise})},l.nfapply=function(e,t){return l(e).nfapply(t)},p.prototype.nfapply=function(e){var t=f(),r=$(e);return r.push(t.makeNodeResolver()),this.fapply(r).fail(t.reject),t.promise},l.nfcall=function(e){var t=$(arguments,1);return l(e).nfapply(t)},p.prototype.nfcall=function(){var e=$(arguments),t=f();return e.push(t.makeNodeResolver()),this.fapply(e).fail(t.reject),t.promise},l.nfbind=l.denodeify=function(e){if(void 0===e)throw new Error("Q can't wrap an undefined function");var t=$(arguments,1);return function(){var r=t.concat($(arguments)),n=f();return r.push(n.makeNodeResolver()),l(e).fapply(r).fail(n.reject),n.promise}},p.prototype.nfbind=p.prototype.denodeify=function(){var e=$(arguments);return e.unshift(this),l.denodeify.apply(void 0,e)},l.nbind=function(e,t){var r=$(arguments,2);return function(){function n(){return e.apply(t,arguments)}var i=r.concat($(arguments)),o=f();return i.push(o.makeNodeResolver()),l(n).fapply(i).fail(o.reject),o.promise}},p.prototype.nbind=function(){var e=$(arguments,0);return e.unshift(this),l.nbind.apply(void 0,e)},l.nmapply=l.npost=function(e,t,r){return l(e).npost(t,r)},p.prototype.nmapply=p.prototype.npost=function(e,t){var r=$(t||[]),n=f();return r.push(n.makeNodeResolver()),this.dispatch("post",[e,r]).fail(n.reject),n.promise},l.nsend=l.nmcall=l.ninvoke=function(e,t){var r=$(arguments,2),n=f();return r.push(n.makeNodeResolver()),l(e).dispatch("post",[t,r]).fail(n.reject),n.promise},p.prototype.nsend=p.prototype.nmcall=p.prototype.ninvoke=function(e){var t=$(arguments,1),r=f();return t.push(r.makeNodeResolver()),this.dispatch("post",[e,t]).fail(r.reject),r.promise},l.nodeify=L,p.prototype.nodeify=function(e){if(!e)return this;this.then(function(t){l.nextTick(function(){e(null,t)})},function(t){l.nextTick(function(){e(t)})})},l.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var ce=c();return l})}).call(this,e("FWaASH"))},{FWaASH:50}],118:[function(e,t,r){(function(r){"use strict";var n,i=e("buffer"),o=i.Buffer,a={};for(n in i)i.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(a[n]=i[n]);var u=a.Buffer={};for(n in o)o.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(u[n]=o[n]);if(a.Buffer.prototype=o.prototype,u.from&&u.from!==Uint8Array.from||(u.from=function(e,t,r){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return o(e,t,r)}),u.alloc||(u.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var n=o(e);return t&&0!==t.length?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n}),!a.kStringMaxLength)try{a.kStringMaxLength=r.binding("buffer").kStringMaxLength}catch(e){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a}).call(this,e("FWaASH"))},{FWaASH:50,buffer:52}],119:[function(e,t,r){var n=e("escodegen").generate;t.exports=function(e,t){t||(t={});var r={},i=function e(i,o){if("Literal"===i.type)return i.value;if("UnaryExpression"===i.type){var a=e(i.argument);return"+"===i.operator?+a:"-"===i.operator?-a:"~"===i.operator?~a:"!"===i.operator?!a:r}if("ArrayExpression"===i.type){for(var u=[],s=0,c=i.elements.length;s"===y?c>p:">="===y?c>=p:"|"===y?c|p:"&"===y?c&p:"^"===y?c^p:"&&"===y?c&&p:"||"===y?c||p:r}if("Identifier"===i.type)return{}.hasOwnProperty.call(t,i.name)?t[i.name]:r;if("ThisExpression"===i.type)return{}.hasOwnProperty.call(t,"this")?t.this:r;if("CallExpression"===i.type){var m=e(i.callee);if(m===r)return r;if("function"!=typeof m)return r;var v=i.callee.object?e(i.callee.object):r;v===r&&(v=null);for(var _=[],s=0,c=i.arguments.length;s0)if(t.ended&&!i){var u=new Error("stream.push() after EOF");e.emit("error",u)}else if(t.endEmitted&&i){var u=new Error("stream.unshift() after end event");e.emit("error",u)}else!t.decoder||i||n||(r=t.decoder.write(r)),t.length+=t.objectMode?1:r.length, -i?t.buffer.unshift(r):(t.reading=!1,t.buffer.push(r)),t.needReadable&&f(e),h(e,t);else i||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length=C)e=C;else{e--;for(var t=1;t<32;t<<=1)e|=e>>t;e++}return e}function s(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:isNaN(e)||null===e?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:e<=0?0:(e>t.highWaterMark&&(t.highWaterMark=u(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function c(e,t){var r=null;return P.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||r||(r=new TypeError("Invalid non-string/buffer chunk")),r}function l(e,t){if(t.decoder&&!t.ended){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.length>0?f(e):b(e)}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,t.sync?D(function(){d(e)}):d(e))}function d(e){e.emit("readable")}function h(e,t){t.readingMore||(t.readingMore=!0,D(function(){p(e,t)}))}function p(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length0)return;if(0===n.pipesCount)return n.flowing=!1,void(O.listenerCount(e,"data")>0&&_(e));n.ranOut=!0}function v(){this._readableState.ranOut&&(this._readableState.ranOut=!1,m(this))}function _(e,t){if(e._readableState.flowing)throw new Error("Cannot switch to old mode now.");var r=t||!1,n=!1;e.readable=!0,e.pipe=S.prototype.pipe,e.on=e.addListener=S.prototype.on,e.on("readable",function(){n=!0;for(var t;!r&&null!==(t=e.read());)e.emit("data",t);null===t&&(n=!1,e._readableState.needReadable=!0)}),e.pause=function(){r=!0,this.emit("pause")},e.resume=function(){r=!1,n?D(function(){e.emit("readable")}):this.read(0),this.emit("resume")},e.emit("readable")}function g(e,t){var r,n=t.buffer,i=t.length,o=!!t.decoder,a=!!t.objectMode;if(0===n.length)return null;if(0===i)r=null;else if(a)r=n.shift();else if(!e||e>=i)r=o?n.join(""):P.concat(n,i),n.length=0;else if(e0)throw new Error("endReadable called on non-empty stream");!t.endEmitted&&t.calledRead&&(t.ended=!0,D(function(){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}))}function w(e,t){for(var r=0,n=e.length;r0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return f(this),null;if(0===(e=s(e,t))&&t.ended)return 0===t.length&&b(this),null;var n=t.needReadable;t.length-e<=t.highWaterMark&&(n=!0),(t.ended||t.reading)&&(n=!1),n&&(t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1),n&&!t.reading&&(e=s(r,t));var i;return i=e>0?g(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),t.ended&&!t.endEmitted&&0===t.length&&b(this),i},i.prototype._read=function(e){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function n(e){e===l&&o()}function i(){e.end()}function o(){e.removeListener("close",u),e.removeListener("finish",s),e.removeListener("drain",p),e.removeListener("error",a),e.removeListener("unpipe",n),l.removeListener("end",i),l.removeListener("end",o),e._writableState&&!e._writableState.needDrain||p()}function a(t){c(),0===_&&0===O.listenerCount(e,"error")&&e.emit("error",t)}function u(){e.removeListener("finish",s),c()}function s(){e.removeListener("close",u),c()}function c(){l.unpipe(e)}var l=this,f=this._readableState;switch(f.pipesCount){case 0:f.pipes=e;break;case 1:f.pipes=[f.pipes,e];break;default:f.pipes.push(e)}f.pipesCount+=1;var d=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr,h=d?i:o;f.endEmitted?D(h):l.once("end",h),e.on("unpipe",n);var p=y(l);e.on("drain",p);var _=O.listenerCount(e,"error");return e.once("error",a),e.once("close",u),e.once("finish",s),e.emit("pipe",l),f.flowing||(this.on("readable",v),f.flowing=!0,D(function(){m(l)})),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,this.removeListener("readable",v),t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,this.removeListener("readable",v),t.flowing=!1;for(var i=0;i=2&&e._responseTimeoutTimer&&clearTimeout(e._responseTimeoutTimer),4==r){var n;try{n=t.status}catch(e){n=0}if(!n){if(e.timedout||e._aborted)return;return e.crossDomainError()}e.emit("end")}};var n=function(t,r){r.total>0&&(r.percent=r.loaded/r.total*100),r.direction=t,e.emit("progress",r)};if(this.hasListeners("progress"))try{t.onprogress=n.bind(null,"download"),t.upload&&(t.upload.onprogress=n.bind(null,"upload"))}catch(e){}try{this.username&&this.password?t.open(this.method,this.url,!0,this.username,this.password):t.open(this.method,this.url,!0)}catch(e){return this.callback(e)}if(this._withCredentials&&(t.withCredentials=!0),!this._formData&&"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof r&&!this._isHost(r)){var i=this._header["content-type"],o=this._serializer||_.serialize[i?i.split(";")[0]:""];!o&&s(i)&&(o=_.serialize["application/json"]),o&&(r=o(r))}for(var a in this.header)null!=this.header[a]&&this.header.hasOwnProperty(a)&&t.setRequestHeader(a,this.header[a]);return this._responseType&&(t.responseType=this._responseType),this.emit("request",this),t.send(void 0!==r?r:null),this},_.agent=function(){return new v},["GET","POST","OPTIONS","PATCH","PUT","DELETE"].forEach(function(e){v.prototype[e.toLowerCase()]=function(t,r){var n=new _.Request(e,t);return this._setDefaults(n),r&&n.end(r),n}}),v.prototype.del=v.prototype.delete,_.get=function(e,t,r){var n=_("GET",e);return"function"==typeof t&&(r=t,t=null),t&&n.query(t),r&&n.end(r),n},_.head=function(e,t,r){var n=_("HEAD",e);return"function"==typeof t&&(r=t,t=null),t&&n.query(t),r&&n.end(r),n},_.options=function(e,t,r){var n=_("OPTIONS",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},_.del=f,_.delete=f,_.patch=function(e,t,r){var n=_("PATCH",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},_.post=function(e,t,r){var n=_("POST",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n},_.put=function(e,t,r){var n=_("PUT",e);return"function"==typeof t&&(r=t,t=null),t&&n.send(t),r&&n.end(r),n}},{"./agent-base":127,"./is-object":129,"./request-base":130,"./response-base":131,"component-emitter":53}],129:[function(e,t,r){"use strict";function n(e){return null!==e&&"object"==typeof e}t.exports=n},{}],130:[function(e,t,r){"use strict";function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}var o=e("./is-object");t.exports=n,n.prototype.clearTimeout=function(){return clearTimeout(this._timer),clearTimeout(this._responseTimeoutTimer),delete this._timer,delete this._responseTimeoutTimer,this},n.prototype.parse=function(e){return this._parser=e,this},n.prototype.responseType=function(e){return this._responseType=e,this},n.prototype.serialize=function(e){return this._serializer=e,this},n.prototype.timeout=function(e){if(!e||"object"!=typeof e)return this._timeout=e,this._responseTimeout=0,this;for(var t in e)switch(t){case"deadline":this._timeout=e.deadline;break;case"response":this._responseTimeout=e.response;break;default:console.warn("Unknown timeout option",t)}return this},n.prototype.retry=function(e,t){return 0!==arguments.length&&!0!==e||(e=1),e<=0&&(e=0),this._maxRetries=e,this._retries=0,this._retryCallback=t,this};var a=["ECONNRESET","ETIMEDOUT","EADDRINFO","ESOCKETTIMEDOUT"];n.prototype._shouldRetry=function(e,t){if(!this._maxRetries||this._retries++>=this._maxRetries)return!1;if(this._retryCallback)try{var r=this._retryCallback(e,t);if(!0===r)return!0;if(!1===r)return!1}catch(e){console.error(e)}if(t&&t.status&&t.status>=500&&501!=t.status)return!0;if(e){if(e.code&&~a.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},n.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},n.prototype.then=function(e,t){if(!this._fullfilledPromise){var r=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(e,t){r.end(function(r,n){r?t(r):e(n)})})}return this._fullfilledPromise.then(e,t)},n.prototype.catch=function(e){return this.then(void 0,e)},n.prototype.use=function(e){return e(this),this},n.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},n.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):e.status>=200&&e.status<300)},n.prototype.get=function(e){return this._header[e.toLowerCase()]},n.prototype.getHeader=n.prototype.get,n.prototype.set=function(e,t){if(o(e)){for(var r in e)this.set(r,e[r]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},n.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},n.prototype.field=function(e,t){if(null===e||void 0===e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),o(e)){for(var r in e)this.field(r,e[r]);return this}if(Array.isArray(t)){for(var n in t)this.field(e,t[n]);return this}if(null===t||void 0===t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},n.prototype.abort=function(){return this._aborted?this:(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort"),this)},n.prototype._auth=function(e,t,r,n){switch(r.type){case"basic":this.set("Authorization","Basic "+n(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},n.prototype.withCredentials=function(e){return void 0==e&&(e=!0),this._withCredentials=e,this},n.prototype.redirects=function(e){return this._maxRedirects=e,this},n.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},n.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},n.prototype.send=function(e){var t=o(e),r=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&o(this._data))for(var n in e)this._data[n]=e[n];else"string"==typeof e?(r||this.type("form"),r=this._header["content-type"],this._data="application/x-www-form-urlencoded"==r?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)?this:(r||this.type("json"),this)},n.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},n.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(this.url.indexOf("?")>=0?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(t>=0){var r=this.url.substring(t+1).split("&");"function"==typeof this._sort?r.sort(this._sort):r.sort(),this.url=this.url.substring(0,t)+"?"+r.join("&")}}},n.prototype._appendQueryString=function(){console.trace("Unsupported")},n.prototype._timeoutError=function(e,t,r){if(!this._aborted){var n=new Error(e+t+"ms exceeded");n.timeout=t,n.code="ECONNABORTED",n.errno=r,this.timedout=!0,this.abort(),this.callback(n)}},n.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},{"./is-object":129}],131:[function(e,t,r){"use strict";function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}var o=e("./utils");t.exports=n,n.prototype.get=function(e){return this.header[e.toLowerCase()]},n.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=o.type(t);var r=o.params(t);for(var n in r)this[n]=r[n];this.links={};try{e.link&&(this.links=o.parseLinks(e.link))}catch(e){}},n.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},{"./utils":132}],132:[function(e,t,r){"use strict";r.type=function(e){return e.split(/ *; */).shift()},r.params=function(e){return e.split(/ *; */).reduce(function(e,t){var r=t.split(/ *= */),n=r.shift(),i=r.shift();return n&&i&&(e[n]=i),e},{})},r.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var r=t.split(/ *; */),n=r[0].slice(1,-1);return e[r[1].split(/ *= */)[1].slice(1,-1)]=n,e},{})},r.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},{}],133:[function(e,t,r){(function(e){!function(e,n){"object"==typeof r&&void 0!==t?t.exports=n():"function"==typeof define&&define.amd?define("underscore",n):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var t=e._,r=e._=n() -;r.noConflict=function(){return e._=t,r}}())}(this,function(){function t(e,t){return t=null==t?e.length-1:+t,function(){for(var r=Math.max(arguments.length-t,0),n=Array(r),i=0;i=0&&r<=bt}}function p(e){return function(t){return null==t?void 0:t[e]}}function y(e){return yt?yt(e)&&!Mt(e):Lt(e)&&zt.test(st.call(e))}function m(e){for(var t={},r=e.length,n=0;n1)se(u,t-1,r,n),i=n.length;else for(var s=0,c=u.length;st?(n&&(clearTimeout(n),n=null),u=c,a=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(s,l)),a};return c.cancel=function(){clearTimeout(n),u=0,n=i=o=null},c}function fe(e,r,n){var i,o,a,u,s,c=function(){var t=ir()-o;r>t?i=setTimeout(c,r-t):(i=null,n||(u=e.apply(s,a)),i||(a=s=null))},l=t(function(t){return s=this,a=t,o=ir(),i||(i=setTimeout(c,r),n&&(u=e.apply(s,a))),u});return l.cancel=function(){clearTimeout(i),i=a=s=null},l}function de(e,t){return yr(t,e)}function he(e){return function(){return!e.apply(this,arguments)}}function pe(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}}function ye(e,t){return function(){if(--e<1)return t.apply(this,arguments)}}function me(e,t){var r;return function(){return--e>0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}function ve(e,t,r){t=K(t,r);for(var n,i=_(e),o=0,a=i.length;o0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+u,a):u=o>=0?Math.min(o+1,u):o+u+1;else if(r&&o&&u)return o=r(n,i),n[o]===i?o:-1;if(i!==i)return o=t(ut.call(n,a,u),f),o>=0?o+a:-1;for(o=e>0?a:u-1;o>=0&&o0?0:a-1;for(i||(n=t[o?o[u]:u],u+=e);u>=0&&u=3;return t(e,W(r,i,4),n,o)}}function Pe(e,t,r){var n=[];return t=K(t,r),Ae(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function De(e,t,r){return Pe(e,he(K(t)),r)}function Ce(e,t,r){t=K(t,r);for(var n=!vr(e)&&_(e),i=(n||e).length,o=0;o=0}function Fe(e,t){return Oe(e,H(t))}function je(e,t){return Pe(e,V(t))}function xe(e,t,r){var n,i,o=-1/0,a=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e){e=vr(e)?e:C(e);for(var u=0,s=e.length;uo&&(o=n)}else t=K(t,r),Ae(e,function(e,r,n){((i=t(e,r,n))>a||i===-1/0&&o===-1/0)&&(o=e,a=i)});return o}function Be(e,t,r){var n,i,o=1/0,a=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e){e=vr(e)?e:C(e);for(var u=0,s=e.length;un||void 0===r)return 1;if(r":">",'"':""","'":"'","`":"`"},ar=te(or),ur=T(or),sr=te(ur),cr=w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},lr=/(.)^/,fr={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},dr=/\\|'|\r|\n|\u2028|\u2029/g,hr=/^\s*(\w|\$)+\s*$/,pr=0,yr=t(function(e,t){var r=yr.placeholder,n=function(){for(var i=0,o=t.length,a=Array(o),u=0;u1&&(n=W(n,t[1])),t=P(e)):(n=ze,t=se(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=Oe(se(t,!1,!1),String),n=function(e,r){return!Te(t,r)}),Br(e,n,r)}),Rr=t(function(e,t){return t=se(t,!0,!0),Pe(e,function(e){return!Te(t,e)})}),Ir=t(function(e,t){return Rr(e,t)}),Nr=t(function(e){return $e(se(e,!0,!0))}),Ur=t(Je);Ae(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=nt[e];w.prototype[e]=function(){var r=this._wrapped;return null!=r&&(t.apply(r,arguments),"shift"!==e&&"splice"!==e||0!==r.length||delete r[0]),et(this,r)}}),Ae(["concat","join","slice"],function(e){var t=nt[e];w.prototype[e]=function(){var e=this._wrapped;return null!=e&&(e=t.apply(e,arguments)),et(this,e)}});var Lr={__proto__:null,VERSION:"1.13.1",restArguments:t,isObject:r,isNull:n,isUndefined:i,isBoolean:o,isElement:a,isString:wt,isNumber:Et,isDate:At,isRegExp:Ot,isError:St,isSymbol:Pt,isArrayBuffer:Dt,isDataView:Mt,isArray:Rt,isFunction:Tt,isArguments:Nt,isFinite:l,isNaN:f,isTypedArray:Gt,isEmpty:g,isMatch:b,isEqual:S,isMap:Qt,isWeakMap:Xt,isSet:Zt,isWeakSet:er,keys:_,allKeys:P,values:C,pairs:k,invert:T,functions:F,methods:F,extend:tr,extendOwn:rr,assign:rr,defaults:nr,create:M,clone:R,tap:I,get:z,has:G,mapObject:J,identity:q,constant:d,noop:Q,toPath:N,property:H,propertyOf:X,matcher:V,matches:V,times:Z,random:ee,now:ir,escape:ar,unescape:sr,templateSettings:cr,template:ne,result:ie,uniqueId:oe,chain:ae,iteratee:$,partial:yr,bind:mr,bindAll:_r,memoize:ce,delay:gr,defer:br,throttle:le,debounce:fe,wrap:de,negate:he,compose:pe,after:ye,before:me,once:wr,findKey:ve,findIndex:Er,findLastIndex:Ar,sortedIndex:ge,indexOf:Or,lastIndexOf:Sr,find:we,detect:we,findWhere:Ee,each:Ae,forEach:Ae,map:Oe,collect:Oe,reduce:Pr,foldl:Pr,inject:Pr,reduceRight:Dr,foldr:Dr,filter:Pe,select:Pe,reject:De,every:Ce,all:Ce,some:ke,any:ke,contains:Te,includes:Te,include:Te,invoke:Cr,pluck:Fe,where:je,max:xe,min:Be,shuffle:Re,sample:Me,sortBy:Ie,groupBy:kr,indexBy:Tr,countBy:Fr,partition:jr,toArray:Ue,size:Le,pick:Br,omit:Mr,first:qe,head:qe,take:qe,initial:Ge,last:He,rest:Ve,tail:Ve,drop:Ve,compact:We,flatten:Ye,without:Ir,uniq:$e,unique:$e,union:Nr,intersection:Ke,difference:Rr,unzip:Je,transpose:Je,zip:Ur,object:Qe,range:Xe,chunk:Ze,mixin:tt,default:w},zr=tt(Lr);return zr._=zr,zr})}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],134:[function(e,t,r){!function(e,n){"object"==typeof r&&void 0!==t?n(r):"function"==typeof define&&define.amd?define(["exports"],n):n(e.URI=e.URI||{})}(this,function(e){"use strict";function t(){for(var e=arguments.length,t=Array(e),r=0;r1){t[0]=t[0].slice(0,-1);for(var n=t.length-1,i=1;i1&&(n=r[0]+"@",e=r[1]),e=e.replace(I,"."),n+c(e.split("."),t).join(".")}function f(e){for(var t=[],r=0,n=e.length;r=55296&&i<=56319&&r>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function h(e){for(var t="",r=0,n=e.length;r=194&&i<224){if(n-r>=6){var o=parseInt(e.substr(r+4,2),16);t+=String.fromCharCode((31&i)<<6|63&o)}else t+=e.substr(r,6);r+=6}else if(i>=224){if(n-r>=9){var a=parseInt(e.substr(r+4,2),16),u=parseInt(e.substr(r+7,2),16);t+=String.fromCharCode((15&i)<<12|(63&a)<<6|63&u)}else t+=e.substr(r,9);r+=9}else t+=e.substr(r,3),r+=3}return t}function p(e,t){function r(e){var r=h(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,d).replace(t.PCT_ENCODED,i)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,d).replace(t.PCT_ENCODED,i)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,d).replace(t.PCT_ENCODED,i)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,d).replace(t.PCT_ENCODED,i)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,d).replace(t.PCT_ENCODED,i)),e}function y(e){return e.replace(/^0*(.*)/,"$1")||"0"}function m(e,t){var r=e.match(t.IPV4ADDRESS)||[],n=j(r,2),i=n[1];return i?i.split(".").map(y).join("."):e}function v(e,t){var r=e.match(t.IPV6ADDRESS)||[],n=j(r,3),i=n[1],o=n[2];if(i){for(var a=i.toLowerCase().split("::").reverse(),u=j(a,2),s=u[0],c=u[1],l=c?c.split(":").map(y):[],f=s.split(":").map(y),d=t.IPV4ADDRESS.test(f[f.length-1]),h=d?7:8,p=f.length-h,v=Array(h),_=0;_1){var E=v.slice(0,b.index),A=v.slice(b.index+b.length);w=E.join(":")+"::"+A.join(":")}else w=v.join(":");return o&&(w+="%"+o),w}return e}function _(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},n=!1!==t.iri?F:T;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var i=e.match(Q);if(i){X?(r.scheme=i[1],r.userinfo=i[3],r.host=i[4],r.port=parseInt(i[5],10),r.path=i[6]||"",r.query=i[7],r.fragment=i[8],isNaN(r.port)&&(r.port=i[5])):(r.scheme=i[1]||void 0,r.userinfo=-1!==e.indexOf("@")?i[3]:void 0,r.host=-1!==e.indexOf("//")?i[4]:void 0,r.port=parseInt(i[5],10),r.path=i[6]||"",r.query=-1!==e.indexOf("?")?i[7]:void 0,r.fragment=-1!==e.indexOf("#")?i[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),r.host&&(r.host=v(m(r.host,n),n)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||"URI is not a "+t.reference+" reference.");var o=J[(t.scheme||r.scheme||"").toLowerCase()];if(t.unicodeSupport||o&&o.unicodeSupport)p(r,n);else{if(r.host&&(t.domainHost||o&&o.domainHost))try{r.host=K.toASCII(r.host.replace(n.PCT_ENCODED,h).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}p(r,T)}o&&o.parse&&o.parse(r,t)}else r.error=r.error||"URI can not be parsed.";return r}function g(e,t){var r=!1!==t.iri?F:T,n=[];return void 0!==e.userinfo&&(n.push(e.userinfo),n.push("@")),void 0!==e.host&&n.push(v(m(String(e.host),r),r).replace(r.IPV6ADDRESS,function(e,t,r){return"["+t+(r?"%25"+r:"")+"]"})),"number"!=typeof e.port&&"string"!=typeof e.port||(n.push(":"),n.push(String(e.port))),n.length?n.join(""):void 0}function b(e){for(var t=[];e.length;)if(e.match(Z))e=e.replace(Z,"");else if(e.match(ee))e=e.replace(ee,"/");else if(e.match(te))e=e.replace(te,"/"),t.pop();else if("."===e||".."===e)e="";else{var r=e.match(re);if(!r)throw new Error("Unexpected dot segment condition");var n=r[0];e=e.slice(n.length),t.push(n)}return t.join("")}function w(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.iri?F:T,n=[],i=J[(t.scheme||e.scheme||"").toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host)if(r.IPV6ADDRESS.test(e.host));else if(t.domainHost||i&&i.domainHost)try{e.host=t.iri?K.toUnicode(e.host):K.toASCII(e.host.replace(r.PCT_ENCODED,h).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+r}p(e,r),"suffix"!==t.reference&&e.scheme&&(n.push(e.scheme),n.push(":"));var o=g(e,t);if(void 0!==o&&("suffix"!==t.reference&&n.push("//"),n.push(o),e.path&&"/"!==e.path.charAt(0)&&n.push("/")),void 0!==e.path){var a=e.path;t.absolutePath||i&&i.absolutePath||(a=b(a)),void 0===o&&(a=a.replace(/^\/\//,"/%2F")),n.push(a)}return void 0!==e.query&&(n.push("?"),n.push(e.query)),void 0!==e.fragment&&(n.push("#"),n.push(e.fragment)),n.join("")}function E(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments[3],i={};return n||(e=_(w(e,r),r),t=_(w(t,r),r)),r=r||{},!r.tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=b(t.path||""),i.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=b(t.path||""),i.query=t.query):(t.path?("/"===t.path.charAt(0)?i.path=b(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:i.path=t.path:i.path="/"+t.path,i.path=b(i.path)),i.query=t.query):(i.path=e.path,void 0!==t.query?i.query=t.query:i.query=e.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function A(e,t,r){var n=a({scheme:"null"},r);return w(E(_(e,n),_(t,n),n,!0),n)}function O(e,t){return"string"==typeof e?e=w(_(e,t),t):"object"===n(e)&&(e=_(w(e,t),t)),e}function S(e,t,r){return"string"==typeof e?e=w(_(e,r),r):"object"===n(e)&&(e=w(e,r)),"string"==typeof t?t=w(_(t,r),r):"object"===n(t)&&(t=w(t,r)),e===t}function P(e,t){return e&&e.toString().replace(t&&t.iri?F.ESCAPE:T.ESCAPE,d)}function D(e,t){return e&&e.toString().replace(t&&t.iri?F.PCT_ENCODED:T.PCT_ENCODED,h)}function C(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}function k(e){var t=h(e);return t.match(de)?t:e}var T=u(!1),F=u(!0),j=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(n=(a=u.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),x=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t= 0x80 (not a basic code point)","invalid-input":"Invalid input"},U=Math.floor,L=String.fromCharCode,z=function(e){return String.fromCodePoint.apply(String,x(e))},G=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},q=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},V=function(e,t,r){var n=0;for(e=r?U(e/700):e>>1,e+=U(e/t);e>455;n+=36)e=U(e/35);return U(n+36*e/(e+38))},H=function(e){var t=[],r=e.length,n=0,i=128,o=72,a=e.lastIndexOf("-");a<0&&(a=0);for(var u=0;u=128&&s("not-basic"),t.push(e.charCodeAt(u));for(var c=a>0?a+1:0;c=r&&s("invalid-input");var h=G(e.charCodeAt(c++));(h>=36||h>U((B-n)/f))&&s("overflow"),n+=h*f;var p=d<=o?1:d>=o+26?26:d-o;if(hU(B/y)&&s("overflow"),f*=y}var m=t.length+1;o=V(n-l,m,0==l),U(n/m)>B-i&&s("overflow"),i+=U(n/m),n%=m,t.splice(n++,0,i)}return String.fromCodePoint.apply(String,t)},W=function(e){var t=[];e=f(e);var r=e.length,n=128,i=0,o=72,a=!0,u=!1,c=void 0;try{ -for(var l,d=e[Symbol.iterator]();!(a=(l=d.next()).done);a=!0){var h=l.value;h<128&&t.push(L(h))}}catch(e){u=!0,c=e}finally{try{!a&&d.return&&d.return()}finally{if(u)throw c}}var p=t.length,y=p;for(p&&t.push("-");y=n&&EU((B-i)/A)&&s("overflow"),i+=(m-n)*A,n=m;var O=!0,S=!1,P=void 0;try{for(var D,C=e[Symbol.iterator]();!(O=(D=C.next()).done);O=!0){var k=D.value;if(kB&&s("overflow"),k==n){for(var T=i,F=36;;F+=36){var j=F<=o?1:F>=o+26?26:F-o;if(TA-Z\\x5E-\\x7E]",'[\\"\\\\]'),de=new RegExp(se,"g"),he=new RegExp(le,"g"),pe=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',fe),"g"),ye=new RegExp(t("[^]",se,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),me=ye,ve={scheme:"mailto",parse:function(e,t){var r=e,n=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var i=!1,o={},a=r.query.split("&"),u=0,s=a.length;u0&&l>s&&(l=s);for(var f=0;f=0?(d=m.substr(0,v),h=m.substr(v+1)):(d=m,h=""),d&&d.indexOf("%")>=0)try{p=o(d,c)}catch(e){p=d}else p=d;if(h&&h.indexOf("%")>=0)try{y=o(h,c)}catch(e){y=h}else y=h;u(i,p)?Array.isArray(i[p])?i[p].push(y):i[p]=[i[p],y]:i[p]=y}return i}function u(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e){return/^[\x00-\x7F]*$/.test(e)}function c(e,t){return e=String(e),e=s(e)?encodeURIComponent(e):i(e,t)}function l(e,t,r){if(!t)throw new TypeError("stringify expects an object");return t+"="+c(e,r.charset)}function f(e,t,r){var n=[];if(!t)throw new TypeError("stringify expects an object");for(var i=0;i50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"identifier"});return this._identifier=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"organization"});return this._organization=e,this}},{key:"withFile",value:function(e){this._file=e}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource=this._organization+"/models",{modelFile:this._file||void 0}}},{key:"_composeUpdateElement",value:function(){return u(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this)}},{key:"prediction",value:function(e){var t=c.default.defer(),r=t.promise;return this._ogapi.Napi.post(this._buildURL()+"/prediction",e,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){t.resolve({statusCode:e.statusCode,body:e.body})}).catch(function(e){t.reject(e)}),r}},{key:"create",value:function(){var e=this._composeElement(),t=c.default.defer();return this._ogapi.Napi.post_multipart(this._resource,{modelFile:e.modelFile},{},this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){switch(e.statusCode){case 200:var r=""!=e.text?JSON.parse(e.text):{},n=e.status;t.resolve({data:r,statusCode:n});break;case 201:var n=e.status,i=e.header&&e.header.location;t.resolve({location:i,statusCode:n});break;case 204:t.resolve(e);break;default:t.reject({errors:e.data.errors,statusCode:e.statusCode})}}).catch(function(e){t.reject(e)}),t.promise}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],137:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, mimetype allowed <'"+JSON.stringify(d)+"'>");return this._details=!0,this._setExtraHeaders({accept:r}),this._download()}return this._details=!1,this._setExtraHeaders({accept:void 0}),this._execute()}}]),t}(c.default);r.default=h},{"../GenericFinder":138,"http-status-codes":76,q:117}],150:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r255)throw new Error("OGAPI_NAME_PARAMETER_MAX_LENGTH_255");return this._name=e,this}},{key:"withVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withHardware",value:function(e){if("string"!=typeof e)throw new Error("Parameter hardware must be a string");return this._hardware=e,this}},{key:"withWorkgroup",value:function(e){if("string"!=typeof e)throw new Error("Parameter workgroup must be a string");return this._workgroup=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withTimeout",value:function(e){if("number"!=typeof e)throw new Error("Parameter ms must be a number");return this._timeout=e,this}},{key:"_checkActions",value:function(e,t){if(void 0===e||e.constructor!==Array)throw new Error("Parameter "+t+" must be typeof Array");for(var r=[],n=0;n, "+t+" allowed <'"+JSON.stringify(s.ACTION_ENUM)+"'>");return e}},{key:"withPreaction",value:function(e){return this._preaction=this._checkActions(e,"preaction"),this}},{key:"withPostaction",value:function(e){return this._postaction=this._checkActions(e,"postaction"),this}},{key:"withUserNotes",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"notes"});return this._userNotes=e,this}},{key:"withActive",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter active must be a boolean");return this._active=e,this}},{key:"_composeElement",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return{bundle:{name:this._name||void 0,version:this._version||void 0,hardware:this._hardware||void 0,workgroup:this._workgroup||void 0,description:this._description||void 0,preaction:this._preaction||void 0,postaction:this._postaction||void 0,userNotes:this._userNotes||void 0,active:this._active||void 0}}}},{key:"_buildURL",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return this._resource+"/"+this._name+"/versions/"+this._version}},{key:"activate",value:function(){var e=d.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),{bundle:{active:!0}},void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_BUNDLE_NOT_ACTIVE"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"deactivate",value:function(){var e=d.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),{bundle:{active:!1}},void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_BUNDLE_NOT_DEACTIVE"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"addDeploymentElement",value:function(e){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");this._deploymentElements||(this._deploymentElements=[]);var t=new l.default(this._parent,this._ogapi,encodeURI(this._buildURL()),e);return this._deploymentElements.push(t),this._deploymentElements[this._deploymentElements.length-1]}},{key:"deployAndActivate",value:function(){var e=this,t=d.default.defer(),r=t.promise;if(e._deploymentElements&&e._deploymentElements.length>0){var n=0,i=0;for(i=0;i0)for(o=0;o1)throw new Error("OGAPI_422_ONE_TRUSTED_BOOT_ALLOWED")}e._allPromisesOk=!0;var a=function(r){201===r.statusCode?function(){var n=r;e._deploymentElements&&e._deploymentElements.length>0?function(){var r=[];e._deploymentElements.forEach(function(e){r.push(e.deploy())}),Promise.all(r).then(function(){e._allPromisesOk&&e.activate().then(function(e,r){t.resolve(n)}).catch(function(e){t.reject(e)})}).catch(function(t){e._allPromisesOk=!1,u(t)})}():t.resolve(n)}():u({statusCode:r.statusCode})},u=function(r){e.delete(),t.reject(r)};return e.create().then(a).catch(u),r}},{key:"create",value:function(){var e=this;if(void 0===this._name||void 0===this._version||void 0===this._hardware||void 0===this._workgroup)throw new Error("Parameters name, version, hardware and workgroup must be defined");var r=d.default.defer(),n=r.promise,i=function(e){201===e.statusCode?r.resolve(e):o({statusCode:e.statusCode})},o=function(e){r.reject(e)};return this._ogapi.newBundleFinder().findByNameAndVersion(this._name,this._version).then(function(n){204===n.statusCode?u(Object.getPrototypeOf(t.prototype),"create",e).call(e).then(i).catch(o):r.reject({errors:[{code:204,message:"OGAPI_400_BUNDLE_EXIST"}],statusCode:400})}).catch(function(n){404===n.statusCode?u(Object.getPrototypeOf(t.prototype),"create",e).call(e).then(i).catch(o):r.reject({errors:[{code:204,message:"OGAPI_400_BUNDLE_EXIST"}],statusCode:400})}),n}},{key:"update",value:function(){var e=d.default.defer(),t=e.promise,r=this._composeElement();return delete r.bundle.name, -delete r.bundle.version,delete r.bundle.workgroup,delete r.bundle.hardware,this._ogapi.Napi.put(this._buildURL(),r,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:[{code:t.statusCode,message:"OGAPI_400_BUNDLE_NOT_UPDATED"}],statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(p.default);r.default=y,t.exports=r.default},{"../provision/BaseProvision":235,"./ACTION_ENUM":151,"./deployment/DeploymentElement":154,q:117}],154:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withType",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"type"});var t="";if(void 0===l.TYPE_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error({message:"OGAPI_NOT_ALLOWED_PARAMETER",parameter:JSON.stringify(t),allowed:JSON.stringify(l.TYPE_ENUM)});return this._type=e,this}},{key:"withPath",value:function(e){if("string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"path"});return this._path=e,this}},{key:"withOrder",value:function(e){return this._order=e,this}},{key:"withOperation",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"operation"});var t="";if(void 0===s.OPERATION_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter operation is not allowed. Parameter value <'"+JSON.stringify(t)+"'>, operation allowed <'"+JSON.stringify(s.OPERATION_ENUM)+"'>");return this._operation=e,this}},{key:"withOption",value:function(e){if(void 0===e||"string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"option"});var t="";if(void 0===c.OPTION_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter option is not allowed. Parameter value <'"+JSON.stringify(t)+"'>, option allowed <'"+JSON.stringify(c.OPTION_ENUM)+"'>");return this._option=e,this}},{key:"withValidators",value:function(e){var t={},r=[];if(void 0===e||e.constructor!==Array)throw new Error("Parameter validators must be typeof Array");for(var n=!1,i=0;i, type allowed <'"+JSON.stringify(d.MODE_VALIDATORS_ENUM)+"'>");if("TRUSTED_BOOT"===n&&("TRUSTED_BOOT"!==n||"FIRMWARE"!==this._type))throw new Error("TRUSTED_BOOT validator only allowed for FIRMWARE deployment element");t.mode=n}else t.mode=d.MODE_VALIDATORS_ENUM[0];if(!e.type)throw new Error("Parameter type is required");var r="",i=e.type;if(void 0===i||"string"!=typeof i)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"type"});if(void 0===f.TYPE_VALIDATORS_ENUM.find(function(e){return e==this},i)&&(r=i),""!==r)throw new Error("Parameter type is not allowed. Parameter value <'"+JSON.stringify(r)+"'>, type allowed <'"+JSON.stringify(f.TYPE_VALIDATORS_ENUM)+"'>");if(t.type=i,t.mode===d.MODE_VALIDATORS_ENUM[0]){if(!e.value)throw new Error("Parameter value is required when mode is "+d.MODE_VALIDATORS_ENUM[0]);var o=e.value;if("string"!=typeof o)throw new Error("Parameter value must be a string");t.value=o}return t}},{key:"withDownloadUrl",value:function(e){if("string"!=typeof e)throw new Error("Parameter downloadUrl must be a string");return this._downloadUrl=e,this}},{key:"withFileName",value:function(e){if("string"!=typeof e)throw new Error("Parameter fileName must be a string");return this._fileName=e,this}},{key:"withValidation",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter validation must be a boolean");return this.validation=e,this}},{key:"withOldName",value:function(e){if("string"!=typeof e)throw new Error("Parameter old name must be a string");return this._oldName=e,this}},{key:"withOldVersion",value:function(e){if("string"!=typeof e)throw new Error("Parameter old version must be a string");return this._oldVersion=e,this}},{key:"withOldPath",value:function(e){if("string"!=typeof e)throw new Error("Parameter old path must be a string");return this._oldPath=e,this}},{key:"withFile",value:function(e){return this._rawFile=e,this}},{key:"_composeUrlCreate",value:function(){if(void 0===this._name||void 0===this._version||""===this._name||""===this._version)throw new Error("Method not allowed - You must to define the name and version");return this._setUrlParameters({fileValidationRequired:this.validation}),this._resource}},{key:"_composeElement",value:function(){if("UPGRADE"===this._operation){if(void 0===this._name||void 0===this._version||void 0===this._type||void 0===this._path||void 0===this._order||void 0===this._operation||void 0===this._oldName||void 0===this._oldVersion||void 0===this._oldPath)throw new Error("Method not allowed - You must define the basic element [name, version, type, path, order, operation, oldName, oldVersion and oldPath ]")}else if(void 0===this._name||void 0===this._version||void 0===this._type||void 0===this._path||void 0===this._order||void 0===this._operation||void 0===this._option)throw new Error("Method not allowed - You must define the basic element [name, version, type, path, order, option and operation]");return{deploymentElement:{name:this._name||void 0,version:this._version||void 0,type:this._type||void 0,path:this._path||void 0,order:this._order||void 0,operation:this._operation||void 0,option:this._option||void 0,fileName:this._fileName||void 0,downloadUrl:this._downloadUrl||void 0,validators:this._validators||void 0,oldName:this._oldName||void 0,oldVersion:this._oldVersion||void 0,oldPath:this._oldPath||void 0}}}},{key:"withTimeout",value:function(e){if("number"!=typeof e)throw new Error("Parameter ms must be a number");return this._timeout=e,this}},{key:"_buildURL",value:function(){if(void 0===this._name||void 0===this._version)throw new Error("Parameters name, version must be defined");return this._resource+"/"+this._name+"/version/"+this._version}},{key:"createWithFile",value:function(e){var t=void 0;if("string"!=typeof e){t=new FormData;var r=new Blob([JSON.stringify(this._composeElement())],{type:"application/octet-stream"});t.append("meta",r),e&&t.append("file",e)}else t={},t.meta=JSON.stringify(this._composeElement()),e&&(t.file=e);var n={};void 0!=this._progressEvent&&(n={progress:this._progressEvent});var i=p.default.defer(),o=i.promise;return this._ogapi.Napi.post_multipart(this._composeUrlCreate(),t,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){201===e.statusCode?i.resolve({location:e.header.location,statusCode:e.statusCode}):i.reject({errors:[{code:e.statusCode,message:"OGAPI_FILE_NOT_CREATE"}],statusCode:e.statusCode})}).catch(function(e){i.reject(e)}),o}},{key:"deploy",value:function(){return this.createWithFile(this._rawFile)}},{key:"update",value:function(){throw new Error("OGAPI_DEPLOYMENT_ELEMENT_NOT_UPDATED")}}]),t}(m.default);r.default=v,t.exports=r.default},{"../../provision/BaseProvision":235,"./MODE_VALIDATORS_ENUM":155,"./OPERATION_ENUM":156,"./OPTION_ENUM":157,"./TYPE_ENUM":158,"./TYPE_VALIDATORS_ENUM":159,q:117}],155:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["PLATFORM","TRUSTED_BOOT"];r.MODE_VALIDATORS_ENUM=n},{}],156:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["INSTALL","UNINSTALL","UPGRADE"];r.OPERATION_ENUM=n},{}],157:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MANDATORY","OPTIONAL"];r.OPTION_ENUM=n},{}],158:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["SOFTWARE","FIRMWARE","CONFIGURATION","PARAMETERS"];r.TYPE_ENUM=n},{}],159:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MD2","MD5","SHA-1","SHA-256","SHA-384","SHA-512","CERTIFICATE_SIGN"];r.TYPE_VALIDATORS_ENUM=n},{}],160:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?o.resolve({data:r,statusCode:e.statusCode}):o.reject({data:i,statusCode:h.default.NOT_FOUND})}}).catch(function(e){o.reject(e)}),a}},{key:"_executeWorkgroupRelation",value:function(){var e="provision/domains/"+this._domain+"/workgroups/"+this._workgroup+"/relations",t=f.default.defer(),r=t.promise,n=this._error_not_found;return this._api.get(e,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){204===e.statusCode?t.reject({data:n,statusCode:h.default.NOT_FOUND}):t.resolve({data:e.body.workgroupRelation,statusCode:e.statusCode})}).catch(function(e){t.reject(e)}),r}}]),t}(c.default);r.default=p,t.exports=r.default},{"../ProvisionGenericFinder":140,"http-status-codes":76,q:117}],161:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"organization"});return this._organization=e,this}},{key:"withCertificate",value:function(e){if("string"!=typeof e)throw new Error({message:"OGAPI_STRING_PARAMETER",parameter:"certificate"});return this._certificates||(this._certificates=[]),this._certificates.push(e),this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource="provision/organizations/"+this._organization+"/channels",{channel:{name:this._name||void 0,description:this._description||void 0,certificates:this._certificates||void 0}}}},{key:"_composeUpdateElement",value:function(){var e=u(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.channel.name,e}}]),t}(l.default);r.default=f,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],162:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"id"});return this._id=e,this}},{key:"withDataStreamVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._dataStreamVersion=e,this}},{key:"withDmmVersion",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"version"});return this._version=e,this}},{key:"withDeviceId",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"device"});return this._deviceId=e,this}},{key:"withDataStream",value:function(e){return e instanceof h.default&&this._datastreams.push(e.composeElement()),this}},{key:"_buildIotURL",value:function(){if(void 0===this._id)throw new Error("Parameters id must be defined");return this._resource+"/"+this._id+"/collect/iot"}},{key:"_buildDmmURL",value:function(){if(void 0===this._id)throw new Error("Parameters id must be defined");return this._resource+"/"+this._id+"/collect/dmm"}},{key:"_composeIotMessage",value:function(){if(void 0===this._datastreams||void 0===this._dataStreamVersion)throw new Error("Parameters datastreams and version must be defined");return{version:this._dataStreamVersion,device:this._deviceId,datastreams:this._datastreams}}},{key:"_composeDmmMessage",value:function(){if(void 0===this._version)throw new Error("Parameters id must be defined");var e=u(Object.getPrototypeOf(t.prototype),"composeElement",this).call(this);return{version:this._version,event:e}}},{key:"create",value:function(){var e=c.default.defer(),t=e.promise,r=[];return this._datastreams.length>0&&r.push(this._ogapi.Sapi.post(this._buildIotURL(),this._composeIotMessage()).then(function(e){if(201!==e.statusCode)throw new Error("IOT NOT CREATED")})),void 0!==this._version&&r.push(this._ogapi.Sapi.post(this._buildDmmURL(),this._composeDmmMessage()).then(function(e){if(201!==e.statusCode)throw new Error("DMM NOT CREATED")})),c.default.all(r).catch(function(t){e.reject({errors:t,statusCode:400})}).done(function(t){e.resolve({statusCode:201})}),t}}]),t}(f.default);r.default=p,t.exports=r.default},{"../devices/collect/Datastreams":165,"./collect/Event":166,q:117}],163:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){var e={id:this._id,name:this._name,type:this._type,hardware:this._hardware.composeElement(),operationalStatus:this._operationalStatus,antennaStatus:this._antennaStatus};return this._softwareList.length>0&&(e.softwareList=this._softwareList),void 0!==this._mobile&&(e.mobile=this._mobile.composeElement()),void 0!==this._subscriber&&(e.subscriber=this._subscriber.composeElement()),void 0!==this._subscription&&(e.subscription=this._subscription.composeElement()),e}}]),e}();r.default=v,t.exports=r.default},{"./Hardware":167,"./Mobile":168,"./Software":170,"./Subscriber":172,"./Subscription":173,"./enum/ANTENNA_STATUS_ENUM":176}],164:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){var e={id:this._event_id,device:{id:this._deviceId,path:this._path,name:this._name,description:this._description,operationalStatus:this._operationalStatus}};return void 0!==this._hardware&&(e.device.hardware=this._hardware.composeElement()),this._softwareList.length>0&&(e.device.softwareList=this._softwareList),void 0!==this._location&&(e.device.location=this._location),void 0!==this._temperature&&(e.device.temperature=this._temperature),void 0!==this._cpuUsage&&(e.device.cpuUsage=this._cpuUsage.composeElement()),void 0!==this._ram&&(e.device.ram=this._ram.composeElement()),void 0!==this._volatilStorage&&(e.device.volatilStorage=this._volatilStorage.composeElement()),void 0!==this._nonVolatilStorage&&(e.device.nonVolatilStorage=this._nonVolatilStorage.composeElement()),void 0!==this._powerSupply&&(e.device.powerSupply=this._powerSupply.composeElement()),this._communicationsModulesList.length>0&&(e.device.communicationsModules=this._communicationsModulesList),void 0!==this._upTime&&(e.device.upTime=this._upTime),e}}]),e}();r.default=w,t.exports=r.default},{"./CommsModuleMessage":163,"./Hardware":167,"./PowerSupply":169,"./Software":170,"./Storage":171,"./Usage":174,"./enum/LEVEL_TREND_ENUM":179,"./enum/TEMPERATURE_STATUS_ENUM":182,q:117}],167:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rn)&&(r=!1),(t[2].length<2||t[2]<1||t[2]>12)&&(r=!1),(t[3].length<2||t[3]<1||t[3]>31)&&(r=!1),r}},{key:"composeElement",value:function(){return{serialnumber:this._serialnumber,manufacturer:{name:this._manufacturerName,oui:this._manufacturerOui||""},model:{name:this._modelName||"",version:this._modelVersion||""},clockDate:this._clockDate}}}]),e}();r.default=o,t.exports=r.default},{}],168:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"_isValidDate",value:function(e){if(""===e||null===e)return!1;var t=e.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\+(\d{2}):(\d{2})/);if(null===t||"object"!=typeof t)return!1;if("object"!=typeof t&&null!==t&&3!==t.size)return!1;var r=!0,n=(new Date).getFullYear();return(t[1].length<4||t[1]<1999||t[1]>n)&&(r=!1),(t[2].length<2||t[2]<1||t[2]>12)&&(r=!1),(t[3].length<2||t[3]<1||t[3]>31)&&(r=!1),r}},{key:"composeElement",value:function(){var e={source:this._source,status:this._status,batteryChargeLevel:{trend:this._trend,status:this._batteryStatus,percentage:this._percentage}};return void 0===this._outageDate&&void 0===this._outageDuration||(e.outage={timestamp:this._outageDate,duration:this._outageDuration}),e}}]),e}();r.default=c,t.exports=r.default},{"./enum/BATTERY_CHARGE_LEVEL_STATUS_ENUM":177,"./enum/BATTERY_CHARGE_STATUS_ENUM":178,"./enum/LEVEL_TREND_ENUM":179,"./enum/POWER_SUPPLY_SOURCE_ENUM":180}],170:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){return{name:this._name,type:this._type,version:this._version,date:this._date}}}]),e}();r.default=u,t.exports=r.default},{"./enum/SOFTWARE_TYPE_ENUM":181,q:117}],171:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"composeElement",value:function(){return{id:this._id,name:this._name,type:this._type,description:this._description,operator:this._operator,imsi:this._imsi,msisdn:this._msisdn,address:{type:this._addressType,value:this._addressValue,apn:this._addressApn}}}}]),e}();r.default=a,t.exports=r.default},{"./enum/ADDRESS_TYPE_ENUM":175}],174:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r50)throw new Error("Parameter organization must be a string, cannot be empty and has a maximum length of 50");return this._organization=e,this}},{key:"withChannel",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter channel must be a string, cannot be empty and has a maximum length of 50");return this._channel=e,this}},{key:"withIdentifier",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter identifier must be a string, cannot be empty and has a maximum length of 50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of 50");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withOperationName",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter operation name must be a string, cannot be empty and has a maximum length of 50");return this._operationName=e,this}},{key:"withJavascript",value:function(e){if("string"!=typeof e)throw new Error("Parameter javascript must be a string");return this._javascript=e,this}},{key:"withNorthCriterias",value:function(e){if(!(e instanceof Array)||0===e.length)throw new Error("Parameter north criteria must be an array and cannot be empty");return this._northCriterias=e,this}},{key:"withSouthCriterias",value:function(e){var t=this;if(!(e instanceof Array)||0===e.length)throw new Error("Parameter south criteria must be an array and cannot be empty");return e.forEach(function(e){try{t.addSouthCriteria(e)}catch(e){throw t._southCriterias=null,e}}),this}},{key:"addSouthCriteria",value:function(e){if("string"!=typeof e)throw new Error("South criteria must be a string");return this._southCriterias||(this._southCriterias=[]),this._southCriterias.push(e),this}},{key:"withType",value:function(e){if("string"!=typeof e||!this._checkValues(e,l.CONNECTOR_FUNCTION_TYPES))throw new Error("Parameter type must be a string and must be one of these values: "+l.CONNECTOR_FUNCTION_TYPES);return this._type=e,this}},{key:"withPayloadType",value:function(e){if("string"!=typeof e||!this._checkValues(e,l.CONNECTOR_FUNCTION_PAYLOAD_TYPES))throw new Error("Parameter payload type must be a string and must be one of these values: "+l.CONNECTOR_FUNCTION_PAYLOAD_TYPES);return this._payloadType=e,this}},{key:"withOperationalStatus",value:function(e){if("string"!=typeof e||!this._checkValues(e,l.CONNECTOR_FUNCTION_OPERATIONAL_STATUS))throw new Error("Parameter operational status must be a string and must be one of these values: "+l.CONNECTOR_FUNCTION_OPERATIONAL_STATUS);return this._operationalStatus=e,this}},{key:"_composeElement",value:function(){return{identifier:this._identifier,name:this._name,operationalStatus:this._operationalStatus,operationName:"COLLECTION"!==this._type?this._operationName:void 0,type:this._type,payloadType:this._payloadType,javascript:this._javascript,description:this._description?this._description:void 0,northCriterias:"REQUEST"===this._type?this._northCriterias:void 0,southCriterias:"REQUEST"!==this._type?this._southCriterias:void 0}}},{key:"_checkRequiredParameters",value:function(e){if(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel||void 0===this._operationalStatus||void 0===this._type||void 0===this._payloadType||void 0===this._javascript)throw new Error("Parameters organization, channel, operational status, type, payloadType, javascript and identifier must be defined")}else if(void 0===this._name||void 0===this._organization||void 0===this._channel||void 0===this._operationalStatus||void 0===this._type||void 0===this._payloadType||void 0===this._javascript)throw new Error("Parameters organization, channel, operational status, type, payloadType, javascript and name must be defined");if("REQUEST"===this._type&&"JSON"!==this._payloadType)throw new Error("Parameter payload type must be JSON when type REQUEST")}},{key:"_buildURL",value:function(){return"connectorFunctions/"+this._resource+"/"+this._organization+"/channels/"+this._channel+"/"}},{key:"create",value:function(){return this._checkRequiredParameters(),this._doNorthPost(this._buildURL(),this._composeElement())}},{key:"update",value:function(){return this._checkRequiredParameters(!0),this._doNorthPut(this._buildURL()+this._identifier,this._composeElement())}},{key:"delete",value:function(){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel)throw new Error("Parameters organization, channel and name must be defined");var e=d.default.defer(),t=e.promise;return this._ogapi.Napi.delete(this._buildURL()+this._identifier).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=h,t.exports=r.default},{"../provision/BaseProvision":235,"./enum/_CONNECTOR_FUNCTIONS_ENUMS":186,q:117}],184:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_NAME_PARAMETER_MAX_LENGTH_50");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error("OGAPI_DESCRIPTION_PARAMETER_MAX_LENGTH_250");return this._description=e,this}},{key:"withParentDomain",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("OGAPI_DOMAIN_PARAMETER_MAX_LENGTH_50");return this._parentDomain=e,this}},{key:"_composeElement",value:function(){if(void 0===this._name)throw new Error({message:"OGAPI_DEFINED_PARAMETER",parameter:"name"});return{domain:{name:this._name||void 0,description:this._description||void 0,parentDomain:this._parentDomain||void 0}}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._name}},{key:"_composeUpdateElement",value:function(){var e=u(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.domain.name,e}}]),t}(l.default);r.default=f,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],190:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0)throw new Error("Error adding datastreams: "+JSON.stringify(r));return this}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Category")}},{key:"_composeElement",value:function(){if(!this._identifier)throw new Error("identifier is required on Category");return{identifier:this._identifier,name:this._name?this._name:void 0,datastreams:this._datastreams}}}]),e}());r.default=a,t.exports=r.default},{"./Datastream":199}],199:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rr)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Datastream")}}]),e}();r.default=u,t.exports=r.default},{ajv:2}],200:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;rr)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on Qrating")}},{key:"_isValidNumber",value:function(e,t){if("number"!=typeof e)throw new Error("Parameter "+t+" must be a number, cannot be empty on Qrating")}}]),e}();r.default=o,t.exports=r.default},{}],201:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0&&n.addDatastreams(t),this._categories.push(n._composeElement()),this}},{key:"addDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1;if(this._categories.forEach(function(t,n){t.identifier===e&&(r=n)}),-1===r)throw new Error("Category "+e+" not exists for this datamodel. Use addCategory instead.");return this._categories[r].datastreams?this._categories[r].datastreams.push(t):this._categories[r].datastreams=[t],this}},{key:"_composeElement",value:function(){if(!this._name)throw new Error("name is required on IoTDatamodel");if(!this._version)throw new Error("version is required on IoTDatamodel");if(!this._resourceType)throw new Error("allowedResourceTypes is required on IoTDatamodel");return{identifier:this._identifier,name:this._name,version:this._version,description:this._description,allowedResourceTypes:this._resourceType,categories:this._categories.length>0?this._categories:void 0}}},{key:"_buildURL",value:function(){return this._resource}},{key:"update",value:function(){throw new Error("Update not supported on this builder. Use datamodelsHelper instead.")}},{key:"delete",value:function(){throw new Error("Delete not supported on this builder. Use datamodelsHelper instead.")}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+"on IoTDatamodel")}}]),t}(c.default);r.default=y},{"../../provision/BaseProvision":235,"../catalog/Category":198,"../catalog/Datastream":199}],202:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0&&r.addDatastreams(t),this._categories.push(r._composeElement()),this}},{key:"addDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1;if(this._categories.forEach(function(t,n){t.identifier===e&&(r=n)}),-1===r)throw new Error("Category "+e+" not exists for this datamodel. Use addCategory instead.");return this._categories[r].datastreams?this._categories[r].datastreams.push(t):this._categories[r].datastreams=[t],this}},{key:"removeCategory",value:function(e){this._isValidString(e,"category",100);var t=-1;if(this._categories.forEach(function(r,n){r.identifier===e&&(t=n)}),-1===t)throw new Error("Category "+e+" not exists for this datamodel");return this._categories.splice(t,1),this}},{key:"removeDatastream",value:function(e,t){this._isValidString(e,"category",100);var r=-1,n=-1;if(this._categories.forEach(function(i,o){i.identifier===e&&(r=o,i.datastreams.forEach(function(e,r){e.identifier===t&&(n=r)}))}),-1===r)throw new Error("Category "+e+" not exists for this datamodel");if(-1===n)throw new Error("Datastream "+t+" not exists for this datamodel and category "+e);this._categories[r].datastreams.splice(n,1);var i=new f.default(this._ogapi,e,this._categories[r].datastreams);return this._categories[r].name&&i.withName(this._categories[r].name),this._categories.splice(r,1),this._categories.push(i._composeElement()),this}},{key:"updateCategory",value:function(e,t){this._isValidString(e,"old category",100);var r=-1,n=-1;if(this._categories.forEach(function(i,o){switch(i.identifier){case e:r=o;break;case t.identifier:n=o}}),-1!=n)throw new Error("New category "+t.identifier+" already exists.");if(-1===r)throw new Error("Category "+e+" not exists for this datamodel.");return this._categories[r].name=t.name,this}},{key:"updateDatastream",value:function(e,t,r){if(this._isValidString(e,"category",100),this._isValidString(t,"id datastream",100),!r||"object"!=typeof r)throw new Error("Datastream must be an object");var n=-1,i=-1;if(this._categories.forEach(function(r,o){r.identifier===e&&(n=o,r.datastreams.forEach(function(e,r){e.identifier===t&&(i=r)}))}),-1===n)throw new Error("Category "+e+" not exists for this datamodel. Create it, use method addCategory instead");if(-1===i)throw new Error("Datastream "+t+" not exists for this datamodel and category "+e+". Create it, use method addDatastream instead.");return this._categories[n].datastreams[i]=r,this}},{key:"_composeElement",value:function(){return{identifier:this._identifier,name:this._name,version:this._version,description:this._description,categories:this._categories}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._organization+"/datamodels/"+this._identifier}},{key:"create",value:function(){throw new Error("Create not supported on this builder. Use DatamodelsBuilder instead.")}},{key:"_isValidString",value:function(e,t,r){if("string"!=typeof e||0===e.length||e.length>r)throw new Error("Parameter "+t+" must be a string, cannot be empty and has a maximum length of "+r+" on DatamodelsHelper")}}]),t}(c.default);r.default=p},{"../../provision/BaseProvision":235,"../catalog/Category":198,"../catalog/Datastream":199}],204:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._description=e,this}},{key:"withNotes",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._notes=e,this}},{key:"withUrl",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._manufUrl=e,this}},{key:"withFax",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._fax=e,this}},{key:"withTelephone",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._telephone=e,this}},{key:"withAddress",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._address=e,this}},{key:"withEmail",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._email=e,this}},{key:"mediaBuilder",value:function(){if(!this._identifier)throw new Error("Required manufacturer identifier");return new f.default(this._ogapi,this._identifier)}},{key:"modelBuilder",value:function(){if(!this._identifier)throw new Error("Required manufacturer identifier and name");return new h.default(this._ogapi,this)}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),{manufacturer:{id:this._identifier||void 0,name:this._name||void 0,description:this._description||void 0,telephone:this._telephone||void 0,address:this._address||void 0,fax:this._fax||void 0,url:this._manufUrl||void 0,notes:this._notes||void 0,email:this._email||void 0}}}},{key:"_composeUpdateElement",value:function(){var e=this._composeElement();return delete e.manufacturer.id,e}},{key:"_buildURL",value:function(){return this._resource+"/"+this._identifier}}]),t}(c.default);r.default=p,t.exports=r.default},{"../provision/BaseProvision":235,"./ManufacturerMedia":206,"./Model":207}],205:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._name=e,this}},{key:"withFile",value:function(e){if(!e)throw new Error("OGAPI_NOT_EMPTY_PARAMETER");return this._file=e,this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),{media:{id:this._identifier||void 0,name:this._name||void 0}}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._identifier}},{key:"update",value:function(){throw new Exception("OGAPI_METHOD_NOT_SUPPORTED")}},{key:"create",value:function(e){var t=void 0;if(e)if("string"!=typeof e){t=new FormData;var r=new Blob([this._composeElement()],{type:"application/json"});t.append("json",r),e&&t.append("file",e)}else t={},t.json=JSON.stringify(this._composeElement()),e&&(t.hardwareMedia=e);else{t=new FormData;var r=new Blob([JSON.stringify(this._composeElement())],{type:"application/octet-stream"});t.append("json",r),t.append("file",this._file)}var n={};void 0!=this._progressEvent&&(n={progress:this._progressEvent});var i=c.default.defer(),o=i.promise;return this._ogapi.Napi.post_multipart(this._resource,t,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){201===e.statusCode?i.resolve({location:e.header.location,statusCode:e.statusCode}):i.reject({errors:[{code:e.statusCode,message:"OGAPI_FILE_NOT_CREATE"}],statusCode:e.statusCode})}).catch(function(e){i.reject(e)}),o}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],207:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._description=e,this}},{key:"withNotes",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._notes=e,this}},{key:"withUrl",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._modelUrl=e,this}},{key:"withVersion",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._version=e,this}},{key:"withManufacturerIdentifier",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._manufacturer||(this._manufacturer=new f.default(this._ogapi)),this._manufacturer.withIdentifier(e),this}},{key:"withManufacturerName",value:function(e){if(!e)throw new Error("OGAPI_STRING_PARAMETER");return this._manufacturer||(this._manufacturer=new f.default(this._ogapi)),this._manufacturer.withName(e),this}},{key:"mediaBuilder",value:function(){if(!this._identifier)throw new Error("Required model identifier");return new h.default(this._ogapi,this._identifier)}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),{model:{id:this._identifier||void 0,name:this._name||void 0,description:this._description||void 0,version:this._version||void 0,notes:this._notes||void 0,url:this._modelUrl||void 0,manufacturer:{id:this._manufacturer._identifier||void 0,name:this._manufacturer._name||void 0}}}}},{key:"_composeUpdateElement",value:function(){var e=this._composeElement();return delete e.model.id,e}},{key:"_buildURL",value:function(){return this._resource+"/"+this._identifier}}]),t}(c.default);r.default=p,t.exports=r.default},{"../provision/BaseProvision":235,"./Manufacturer":204,"./ModelMedia":209}],208:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._name=e,this}},{key:"withFileName",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER");return this._fileName=e,this}},{key:"withFile",value:function(e){if(!e)throw new Error("OGAPI_NOT_EMPTY_PARAMETER");return this._file=e,this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),{media:{id:this._identifier||void 0,name:this._name||void 0}}}},{key:"_buildURL",value:function(){return this._resource+"/"+this._identifier}},{key:"update",value:function(){throw new Exception("OGAPI_METHOD_NOT_SUPPORTED")}},{key:"create",value:function(e){var t=void 0;if(e)if("string"!=typeof e){t=new FormData;var r=new Blob([this._composeElement()],{type:"application/json"});t.append("json",r),e&&t.append("file",e)}else t={},t.json=JSON.stringify(this._composeElement()),e&&(t.hardwareMedia=e);else{t=new FormData;var r=new Blob([JSON.stringify(this._composeElement())],{type:"application/octet-stream"});t.append("json",r),t.append("file",this._file)}var n={};void 0!=this._progressEvent&&(n={progress:this._progressEvent});var i=c.default.defer(),o=i.promise;return this._ogapi.Napi.post_multipart(this._resource,t,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){201===e.statusCode?i.resolve({location:e.header.location,statusCode:e.statusCode}):i.reject({errors:[{code:e.statusCode,message:"OGAPI_FILE_NOT_CREATE"}],statusCode:e.statusCode})}).catch(function(e){i.reject(e)}),o}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],210:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r50)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of 50");return this._identifier=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter organization must be a string, cannot be empty and has a maximum length of 50");return this._organization=e,this}},{key:"withTitle",value:function(e){if("string"!=typeof e)throw new Error("Parameter title must be a string, cannot be empty and has a maximum length of 50");return this._title=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of 50");return this._name=e,this}},{key:"withDescription",value:function(e){return this._description=e||void 0,this}},{key:"withParameters",value:function(e){return this._parameters=e||void 0,this}},{key:"fromCatalog",value:function(e){return this._fromCatalog=e,this}},{key:"withSteps",value:function(e){return this._steps=e||void 0,this}},{key:"withModels",value:function(e){return this._models=e||void 0,this}},{key:"applicableTo",value:function(e){return this._applicableTo=e||void 0,this}},{key:"_composeElement",value:function(e){return{name:this._name,title:this._title,description:this._description?this._description:void 0,parameters:this._parameters||void 0,fromCatalog:this._fromCatalog||void 0,steps:this._steps||void 0,models:this._models||void 0,applicableTo:this._applicableTo||void 0}}},{key:"_checkRequiredParameters",value:function(e){if(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._name||void 0===this._title)throw new Error("Parameters organization, title and name must be defined")}else if(void 0===this._name||void 0===this._organization||void 0===this._title)throw new Error("Parameters organization, title and name must be defined")}},{key:"_buildURL",value:function(){return"operationTypes/"+this._resource+"/"+this._organization}},{key:"create",value:function(){return this._checkRequiredParameters(),this._doNorthPost(this._buildURL(),this._composeElement())}},{key:"update",value:function(){return this._checkRequiredParameters(!0),this._doNorthPut(this._buildURL()+"/"+this._identifier,this._composeElement(!0))}},{key:"delete",value:function(){if(void 0===this._identifier||void 0===this._organization)throw new Error("Parameters organization and name must be defined");var e=f.default.defer(),t=e.promise;return this._ogapi.Napi.delete(this._buildURL()+"/"+this._identifier).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors, -statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],211:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r unavailable."):t.resolve(o._createBuilder(e.config))}):t.resolve(this._createBuilder(i.config)),r}},{key:"getOperationList",value:function(){return(0,h.default)(!0,this._operationNames)}},{key:"_createBuilder",value:function(e){return new u.default(this._ogapi,e)}},{key:"_createPeriodicBuilder",value:function(e){return new c.default(this._ogapi,e.id,e)}},{key:"_loadOperationCatalog",value:function(){var e=this,t=f.default.defer(),r=t.promise;return this._ogapi.operationTypesSearchBuilder().build().execute().then(function(r){if(200===r.statusCode){var n=r.data;for(var i in n){var o=n[i].name.toUpperCase();e._operationNames.push(o),e._operations.push({name:o,config:n[i]})}}t.resolve(e)}).catch(function(r){t.resolve(e)}),r}},{key:"_findOperation",value:function(e){return this._operations.find(function(e){return e.name==this},e)}}]),e}();r.default=p,t.exports=r.default},{"./catalog/BaseOperationBuilder":218,"./catalog/period/PeriodicityUpdateBuilder":226,merge:112,q:117}],216:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r not allowed to operation <'"+this._parent._config.name+"'>. Entity types allowed <'"+JSON.stringify(this._parent._config.applicableTo)+"'>");return this._parent._entityTypeWhenFilter=t,void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now Filter will remove the last way appended ."),void 0!==e._filterTemplate?this._parent._build.target={filter:e._filterTemplate.filter}:this._parent._build.target={filter:e},this._parent}},{key:"list",value:function(e){var t=this;if(void 0===e||e.constructor!==Array)throw new Error("Parameter entities must be typeof Array");return void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now List of entities will remove the last way appended ."),this._parent._build.target={append:{}},e.forEach(function(e){if(e.constructor===String)t._parent._build.target.append.entities||(t._parent._build.target.append.entities=[]),t._parent._build.target.append.entities.push(e);else{if(!e.id||!e.parameters)throw new Error("Entity parameters must include id and parameters: "+JSON.stringify(e));t._parent._build.target.append.entitiesWithParameters||(t._parent._build.target.append.entitiesWithParameters=[]),t._parent._build.target.append.entitiesWithParameters.push(e)}}),this._parent}},{key:"tag",value:function(e){return void 0!==this._parent._build.target&&console.warn("An Operation only allow one kind of way to append entities. Filter | Tag | List of entities. Now Tag will remove the last way appended ."),this._parent._build.target={append:{tags:[e]}},this._parent}}]),e}();r.default=o,t.exports=r.default},{}],218:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r. Value setted <"+e+">")},list:function(e){if(void 0===this.find(function(e){return e==this},e))throw new Error("Value must be one of these: "+JSON.stringify(this))},editable:function(e){return!0}},A=function(){function e(t,r){i(this,e),this._ajv=new w.default({useDefaults:"empty",coerceTypes:!0}),this.appendEntitiesBy=new d.default(t,this),this._config=r,this._ogapi=t,this._resourcesAvailables={job:"/jobs",task:"/tasks"},this._entityTypeWhenFilter=void 0,this._build={operationParameters:{ackTimeout:0,timeout:9e4,retries:0,retriesDelay:0,retryResultList:[]},name:r.name,schedule:{}},void 0!==r.parameters&&(this._build.parameters={})}return o(e,[{key:"withNotes",value:function(e){if(null===e)return delete this._build.userNotes,this;if("string"!=typeof e)throw new Error("Parameter notes must be a string");return this._build.userNotes=e,this}},{key:"withCallback",value:function(e){if(null===e)return delete this._build.callback,delete this._build.notify,this;if("string"!=typeof e)throw new Error("Parameter url must be a string");return this._build.callback=e,this._build.notify=!0,this}},{key:"withScatteringMaxSpread",value:function(e){if(null===e&&void 0!==this._build.schedule.scattering)return delete this._build.schedule.scattering.maxSpread,this;if("number"!=typeof e)throw new Error("Parameter percentage must be a number");if(e<0||e>100)throw new Error("The value of percentage parameter must be between 0-100");return void 0===this._build.schedule.scattering&&(this._build.schedule.scattering={}),this._build.schedule.scattering.maxSpread=e,this}},{key:"withScatteringStrategy",value:function(e,t){if(null===e&&void 0!==this._build.schedule.scattering)return delete this._build.schedule.scattering.strategy,this;if("number"!=typeof e)throw new Error("Parameter factor must be a number");if(e<0||e>100)throw new Error("The value of factor parameter must be between 0-100");return void 0===this._build.schedule.scattering&&(this._build.schedule.scattering={}),this._build.schedule.scattering.strategy={field:"subscription.collected.cellInfo",factor:e},"number"==typeof t&&(this._build.schedule.scattering.strategy.warningMaxRate=t),this}},{key:"executeImmediately",value:function(){return this._build.active=!0,void 0!==this._build.schedule&&delete this._build.schedule.start,delete this._build.task,this}},{key:"executeIDLE",value:function(){throw new Error("Not implemented yet")}},{key:"executeLater",value:function(e){var t=arguments.length<=1||void 0===arguments[1]||arguments[1];if("number"!=typeof e)throw new Error("Parameter minutes must be typeof number");return this._build.active=t,void 0===this._build.schedule&&(this._build.schedule={}),this._build.schedule.start={delayed:_.default.duration(e,"minutes").asMilliseconds()},delete this._build.task,this}},{key:"executeEvery",value:function(e,t,r,n,i){if(void 0===n&&(n=!0),void 0===e||e.constructor!==Date)throw new Error("Parameter date must be typeof Date");var o=Array.prototype.slice.call(arguments),a=this._getName(o.slice(1,3)),u=this._getEnd(o.slice(1,3));return this._build.active=n,new m.default(this,e,a,u,i)}},{key:"executeEach",value:function(e,t,r,n,i){if(void 0===n&&(n=!0),void 0===e||e.constructor!==Date)throw new Error("Parameter date must be typeof Date");var o=Array.prototype.slice.call(arguments),a=this._getName(o.slice(1,3)),u=this._getEnd(o.slice(1,3));return this._build.active=n,new p.default(this,e,a,u,i)}},{key:"_getName",value:function(e){for(var t=0;t"),void 0!==this._build.task){var i=this._build.task,o=this._build.schedule.stop;if(void 0!==i.repeating.period){var a=void 0;switch(i.repeating.period.unit){case"DAYS":a=_.default.duration(i.repeating.period.each,"days").asMilliseconds();break;case"HOURS":a=_.default.duration(i.repeating.period.each,"hours").asMilliseconds();break;case"MINUTES":a=_.default.duration(i.repeating.period.each,"minutes").asMilliseconds()}void 0!==o&&"number"==typeof o.delayed?o.delayed>=a&&n.push("You can not execute an operation with a job timeout greater than the repetition period."):(o=_.default.duration(a,"milliseconds").asMinutes()-1,console.info("Not specified the job timeout. By default, timeout will be "+o+" minutes"),this.withJobTimeout(o))}}if(n.length>0)throw this._build=t,n;void 0===this._build.schedule.stop&&(console.info("Not specified the job timeout. By default, timeout will be 30 days"),this.withJobTimeout(43200)),void 0!==this._build.task?(e=this._resourcesAvailables.task,r=this._convertToTask(this._build)):(e=this._resourcesAvailables.job,r=this._convertToJob(this._build)),void 0!==this._build.target&&void 0!==this._build.target.filter&&(e=e+"?entityType="+this._entityTypeWhenFilter);var s=new c.default(this._ogapi,e,r);return this._build=t,s}},{key:"_convertToTask",value:function(e){var t=e.task;this.executeImmediately();var r=this._convertToJob(this._build),n=(0,_.default)(new Date),i=(0,_.default)(t.start),o={task:{active:!0,name:t.name,description:t.description,job:r.job,schedule:{start:{date:i.format(g.DATE_FORMAT)},repeating:t.repeating}}};if(void 0!==t.stop&&(void 0!==t.stop.date?o.task.schedule.stop={date:(0,_.default)(t.stop.date).format(g.DATE_FORMAT)}:o.task.schedule.stop=t.stop),_.default.max(n,i)==n){if(void 0!==t.stop&&void 0!==t.stop.date){var a=(0,_.default)(t.stop.date);if(_.default.max(n,a)==n)throw new Error("Can not create operation object because stop operation period is earlier than current date. It happened because you passed a lot of time between configuration of an operation and create the operation.")}delete o.task.schedule.start}return o}},{key:"_convertToJob",value:function(e){return 0===e.operationParameters.ackTimeout&&delete e.operationParameters.ackTimeout,{job:{request:e}}}},{key:"_addSpecificParameter",value:function(e,t){this._build.operationParameters[t]=e}},{key:"_checkParam",value:function(e,t){if("number"===t.type&&"number"!=typeof e)throw new Error(t.name+": Expected number but found "+typeof e);for(var r in t.attributes)"function"==typeof E[r]&&E[r].call(t.attributes[r],e)}},{key:"_checkMandatoryParameters",value:function(){if(this._config.parameters&&this._config.parameters.schema){var e=this._ajv.compile(this._config.parameters.schema);if(!e(this._build.parameters))throw new Error(e.errors)}}}]),e}();r.default=A,t.exports=r.default},{"./../../util/DATE_FORMAT":336,"./AppendEntitiesBy":217,"./Operation":219,"./parameters/ParameterBuilderFactory":221,"./period/ExecuteEachBuilder":223,"./period/ExecuteEveryBuilder":224,ajv:2,merge:112,moment:113}],219:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r not allow value setted <'"+e+"'>. Only are allowed this configuration:"+JSON.stringify(this._config.attributes)),this):(console.warn("Parameter <'"+this._config.name+"'> not allow type of value setted <'"+typeof e+"'>. Only are allowed this type: "+this._getType()),this)}},{key:"_isString",value:function(){return"string"===this._config.type||"string"===this._config.subtype}},{key:"_isObject",value:function(){return"object"===this._config.type||"object"===this._config.subtype}},{key:"_isNumber",value:function(){ -return"number"===this._config.type||"number"===this._config.subtype}},{key:"_isArray",value:function(){return"array"===this._config.type||"array"===this._config.subtype}},{key:"_isBoolean",value:function(){return"boolean"===this._config.type||"boolean"===this._config.subtype}},{key:"_isDate",value:function(){return"date"===this._config.type||"date"===this._config.subtype}},{key:"_isTime",value:function(){return"time"===this._config.type||"time"===this._config.subtype}},{key:"_getType",value:function(){return this._isArray()?"array":this._isString()||this._isDate()||this._isTime()?"string":this._isObject()?"object":this._isNumber()?"number":this._isBoolean()?"boolean":"unknown"}},{key:"_isTypeValueAllow",value:function(e){var t=!0,r=typeof e;return(this._isString()||this._isTime()||this._isDate())&&"string"!==r&&(t=!1),this._isNumber()&&"number"!==r&&(t=!1),this._isObject()&&"object"!==r&&(t=!1),this._isBoolean()&&"boolean"!==r&&(t=!1),t}},{key:"_isAllowValue",value:function(e){if(void 0!==this._config.attributes){var t=this._config.attributes;if(void 0!==t.list)return void 0!==t.list.find(function(e){return e==this},e)}return!0}},{key:"build",value:function(){if(this._config.required&&(void 0===this._build||0===this._build.length))throw new Error("Parameter <'"+this._config.name+"'> is required and their value is not defined");var e={name:this._config.name,value:n({},this._getType(),this._build)};return void 0!==this._build&&0!==this._build.length||(e=void 0),e}},{key:"buildAndAppend",value:function(){var e=this.build();if(void 0!==e){var t=this._parent._build.parameters.findIndex(function(e){return e.name==this.name},e);-1===t?this._parent._build.parameters.push(e):this._parent._build.parameters[t]=e}return this._parent}}]),e}());r.default=u,t.exports=r.default},{moment:113}],221:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=e("./BaseParameterBuilderWithParent"),o=(function(e){e&&e.__esModule}(i),function e(t,r,i){n(this,e)});r.default=o,t.exports=r.default},{"./BaseParameterBuilderWithParent":220}],222:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["MON","TUE","WED","THU","FRI","SAT","SUN"];r.DAYS_ENUM=n},{}],223:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, Months allowed <'"+JSON.stringify(a.MONTHS_ENUM)+"'>");return new d.default(this._parent,this._date,this._periodicityName,e,this._end,this._description)}}]),e}();r.default=y,t.exports=r.default},{"./MONTHS_ENUM":225,"./pattern/ByGeneric":227,"./pattern/ByMonth":228,"./pattern/ByWeek":229,"./pattern/ByYear":230}],225:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];r.MONTHS_ENUM=n},{}],226:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r=o&&r.push("You can not execute an operation with a job timeout greater than the repetition period.")}}if(r.length>0)throw this._build=e,r;void 0!==this._build.task&&(t=this._updateTask(this._build));var a=new f.default(this._ogapi,this._resource,t);return this._build=e,a}},{key:"_updateTask",value:function(e){var t=e.task,r=(0,c.default)(new Date),n=(0,c.default)(t.start),i={task:{schedule:{}}};try{t.start&&(i.task.schedule.start={date:n.format(_.DATE_FORMAT)}),t.stop&&(i.task.schedule.stop={date:(0,c.default)(t.stop).format(_.DATE_FORMAT)}),t.repeating&&(i.task.schedule.repeating=t.repeating)}catch(e){}if(delete i.task.schedule.name,void 0!==t.stop&&(void 0!==t.stop.date?i.task.schedule.stop={date:(0,c.default)(t.stop.date).format(_.DATE_FORMAT)}:i.task.schedule.stop=t.stop),c.default.max(r,n)==r){if(void 0!==t.stop&&void 0!==t.stop.date){var o=(0,c.default)(t.stop.date);if(c.default.max(r,o)==r)throw new Error("Can not create operation object because stop operation period is earlier than current date. It happened because you passed a lot of time between configuration of an operation and create the operation.")}delete i.task.schedule.start}return i}}]),e}();r.default=g,t.exports=r.default},{"../Operation":219,"./../../../util/DATE_FORMAT":336,"./ExecuteEachBuilder":223,"./ExecuteEveryBuilder":224,"./pattern/ByGeneric":227,merge:112,moment:113}],227:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r31||e<1)throw new Error("Parameter day must be greater than 1 and less than 31");return this._day=e,this._build()}},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.monthly={day:this._day,months:this._months},e}}]),t}(s.default);r.default=c,t.exports=r.default},{"./ByGeneric":227}],229:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r, Months allowed <'"+JSON.stringify(c.DAYS_ENUM)+"'>");return this._days=e,this._build()}},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.weekly={days:this._days},e}}]),t}(s.default);r.default=l,t.exports=r.default},{"./../DAYS_ENUM":222,"./ByGeneric":227}],230:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r31||e<1)throw new Error("Parameter day must be greater than 1 and less than 31");return this._day=e,void 0===this._month?this:this._parent._task?(this._build(),this):this._build()}},{key:"month",value:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e){if("string"!=typeof e){if(!this._month)throw new Error("OGAPI_PARAMETER_MONTH_MUST_BE_STRING");e=this._month}if(void 0===c.MONTHS_ENUM.find(function(e){return e==this},e))throw new Error("Any month into parameter months is not allowed. Parameter value <'"+e+"'>, Months allowed <'"+JSON.stringify(c.MONTHS_ENUM)+"'>");return this._month=e,void 0===this._day?this:this._parent._task?(this._build(),this):this._build()})},{key:"_create",value:function(){var e=a(Object.getPrototypeOf(t.prototype),"_create",this).call(this);return e.repeating.pattern.yearly={day:this._day,month:this._month},e}}]),t}(s.default);r.default=l,t.exports=r.default},{"./../MONTHS_ENUM":225,"./ByGeneric":227}],231:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?r.resolve({data:o,statusCode:e.statusCode}):r.reject({data:i,statusCode:h.default.NOT_FOUND})}}).catch(function(e){r.reject(e)}),n}},{key:"_executeWorkgroupRelation",value:function(){var e="provision/domains/"+this._domain+"/workgroups/"+this._workgroup+"/relations",t=f.default.defer(),r=t.promise,n=this._error_not_found;return this._api.get(e,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){204===e.statusCode?t.reject({data:n,statusCode:h.default.NOT_FOUND}):t.resolve({data:e.body.workgroupRelation,statusCode:e.statusCode})}).catch(function(e){t.reject(e)}),r}}]),t}(c.default);r.default=p,t.exports=r.default},{"../ProvisionGenericFinder":140,"http-status-codes":76,q:117}],232:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._name=e,this}},{key:"withDomain",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_50");return this._domain=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error("OGAPI_STRING_PARAMETER_MAX_LENGTH_250");return this._description=e,this}},{key:"withCountryCode",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._countryCode=e.toUpperCase(),this}},{key:"withLangCode",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._langCode=e.toLowerCase(),this}},{key:"withTimeZone",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._timeZone=e,this}},{key:"withPlan",value:function(e){if("string"!=typeof e||0===e.length)throw new Error("OGAPI_STRING_PARAMETER");return this._plan=e,this}},{key:"withOnlyAssignedDomainCertificates",value:function(e){if("boolean"!=typeof e||!0!==e&&!1!==e)throw new Error("Parameter OnlyAssignedDomainCertificates must be a boolean and cannot be empty");return this._onlyDomainCerts=e,this}},{key:"withZoom",value:function(e){if("number"!=typeof(e*=1)||e<0||e>19)throw new Error("Parameter zoom must be a number between 0 and 19");return this._zoom=e,this}},{key:"withLocation",value:function(e,t){if(e*=1,t*=1,"number"!=typeof e||"number"!=typeof t)throw new Error("Latitude and longitude parameters must be numbers");if(e<-90||e>90)throw new Error("Parameter latitude value must be between -90 and 90");if(t<-180||t>180)throw new Error("Parameter longitude value must be between -180 and 180");return this._location={latitude:e,longitude:t},this}},{key:"_composeElement",value:function(){if(void 0===this._name||void 0===this._langCode||void 0===this._countryCode)throw new Error("Parameters name, country code and lang code must be defined");var e={};void 0!=this._zoom&&(e.zoom=this._zoom),void 0!=this._location&&(e.location=this._location);var t={organization:{name:this._name||void 0,description:this._description||void 0,plan:this._plan||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timeZone||void 0,onlyAssignedDomainCertificates:"boolean"!=typeof this._onlyDomainCerts?this._onlyDomainCerts:void 0}};return this._domain&&(t.organization.domain=this._domain),(e.zoom||e.location)&&(t.organization.mapDefault=e),t}},{key:"_composeUpdateElement",value:function(){if(this._domain)throw new Error("The domain parameter is not allowed in the update");var e=this._composeElement();return delete e.organization.name,e}},{key:"_buildURL",value:function(){if(void 0===this._name)throw new Error("Parameter name must be defined");return this._resource+"/"+this._name}}]),t}(s.default);r.default=c,t.exports=r.default},{"../provision/BaseProvision":235}],233:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"identifier"});return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"organization"});return this._organization=e,this}},{key:"withActions",value:function(e){var t=this;if(!(e instanceof Array))throw new Error({message:"Parameter actions requires an array",parameter:"actions"});this._actions=[],e.forEach(function(e){t.addAction(e)})}},{key:"addAction",value:function(e){if("object"!=typeof e||!e.name||"string"!=typeof e.name||!e.type||"string"!=typeof e.type)throw new Error({message:"Parameter action requires name and type",parameter:"actions"});this._actions||(this._actions=[]),this._actions.push(e)}},{key:"prediction",value:function(e,t,r){var n=c.default.defer(),i=n.promise,o={input:e};t&&r&&(o.collect={deviceId:t,datastream:r});var n=c.default.defer(),i=n.promise;return this._ogapi.Napi.post(this._buildURL()+"/prediction",o,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){n.resolve({statusCode:e.statusCode,body:e.body})}).catch(function(e){n.reject(e)}),i}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource=this._organization+"/pipelines",{name:this._name||void 0,actions:this._actions||void 0}}},{key:"_composeUpdateElement",value:function(){var e=u(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.pipeline.name,e}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],235:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0){for(var t=0;t0)throw new Error("There are required parameters that have not been set. Missing parameters: "+JSON.stringify(e).replace(new RegExp('"',"g"),""))}}},{key:"create",value:function(){var e=this;this._checkRequiredParameters();var t=a.default.defer(),r=t.promise,n=this._composeElement();return this._ogapi.Napi.post(this._resource,n,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(r){201===r.statusCode?("function"==typeof e._onCreated&&e._onCreated(r.header.location),t.resolve({location:r.header.location,statusCode:r.statusCode})):t.reject({errors:r.errors,statusCode:r.statusCode})}).catch(function(e){t.reject(e)}),r}},{key:"delete",value:function(e){var t=a.default.defer(),r=t.promise -;return this._ogapi.Napi.delete(this._buildURL(),this._timeout,this._getExtraHeaders(),this._getUrlParameters(),e,this._getServiceBaseURL()).then(function(e){200===e.statusCode?t.resolve({statusCode:e.statusCode}):t.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){t.reject(e)}),r}},{key:"update",value:function(){var e=a.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"_composeUpdateElement",value:function(){return this._composeElement()}},{key:"_doNorthPut",value:function(e,t){var r=a.default.defer(),n=r.promise;return this._ogapi.Napi.put(e,t,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){200===e.statusCode?r.resolve({statusCode:e.statusCode}):200===e.status?r.resolve({statusCode:e.status}):r.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){r.reject(e)}),n}},{key:"_doNorthPost",value:function(e,t){var r=this,n=a.default.defer(),i=n.promise;return this._ogapi.Napi.post(e,t,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){201===e.statusCode?("function"==typeof r._onCreated&&r._onCreated(e.header.location),n.resolve({location:e.header.location,statusCode:e.statusCode})):200===e.statusCode?n.resolve({statusCode:e.statusCode}):n.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){n.reject(e)}),i}},{key:"_getExtraHeaders",value:function(){return this._headers}},{key:"_setExtraHeaders",value:function(e){if(this._headers)for(var t=Object.keys(e),r=0;r, allowed <'"+JSON.stringify(t)+"'>"),e}},{key:"_getServiceBaseURL",value:function(){return this._serviceBaseURL}}]),e}();r.default=u,t.exports=r.default},{q:117}],236:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0&&Object.keys(e).forEach(function(r){if(r.toLowerCase().startsWith("provision")){var n=e[r];n.forEach?n.forEach(function(e){e._index.value&&e._value&&e._value._current&&t.withComplex(r,e._index.value._current.value,e._value._current.value)}):t.with(r,n._value._current.value)}})}},{key:"_initFormJson",value:function(e,t,r){var n=this;if(e){Object.keys(e).forEach(function(i){var o=e[i],a=o._current,u=t?t+"."+i:i;if(a){var s=a.value;r?n.withComplex(u,r,s):n.with(u,s)}else Array.isArray(o)?o.forEach(function(e){n._initFromJson(e,u+"[]",e.identifier._current.value)}):n._initFromJson(o,u,r)})}}},{key:"initFromJson",value:function(e){var t=this,r={};e&&(r=e.provision)&&t._initFromJson(r,"provision")}},{key:"withComplex",value:function(e,t,r){if(!t)return console.warn("Communication module identifier not defined. This value wil be ignored"),this;if(1!==this.getAllowedDatastreams().filter(function(t){return t.identifier===e}).length)return console.warn("Datastream not found or operations can not be performed on it. This value will be ignored. Datastream Name: "+e),this;this._entity[e]||(this._entity[e]=[]);for(var n=!1,i=0;i0)return t.notify({message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:55}),e._setUrlParameters({flattened:!0}),o._ogapi.Napi.put(o._urlWithKey(),n,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?("function"==typeof o._onCreated&&o._onCreated(e.header.location),t.notify({entity:o._key._value._current.value,message:"OGAPI_DEVICE_CREATED ",type:"success",percentage:75}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})});r.statusCode===h.default.CREATED?("function"==typeof o._onCreated&&o._onCreated(r.header.location),t.notify({entity:o._key._value._current.value,message:"OGAPI_DEVICE_CREATED",type:"success",percentage:75}),t.resolve({location:r.header.location,statusCode:r.statusCode})):t.reject({errors:r.errors,statusCode:r.statusCode})}).catch(function(e){if(e.statusCode===h.default.BAD_REQUEST){v.default.query(e,"$..message")[0].includes("Entity duplicated"),t.reject({errors:e.data.errors,statusCode:e.statusCode})}else t.reject({errors:e.data,statusCode:e.statusCode})})}).catch(function(e){e.data.errors.forEach(function(e){var r=e.description;e.label&&(r+=":"+e.label),t.notify({message:"Error: "+r,type:"error",percentage:80})});var r=[o.delete(t,90)];i.forEach(function(e){r.push(e.wrapper.delete(t,90))}),y.default.allSettled(r).then(function(){t.reject(e)}).catch(function(){t.reject(e)})}),t.promise}},{key:"update",value:function(){var e=this,t=y.default.defer(),r=this._objClone,n=[],i=this;return this._wrappers.forEach(function(e){n.push({wrapper:e,promise:e.execute(t,20)})}),y.default.allSettled(n.reduce(function(e,t){return e.push(t.promise),e},[])).then(function(){return t.notify({message:"OGAPI_201_ENTITIES_CREATED",type:"success",percentage:40}),t.notify({entity:i._key._value._current.value,message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:45}),e._setUrlParameters({flattened:!0}),i._ogapi.Napi.put(i._url,r,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?("function"==typeof i._onCreated&&i._onCreated(e.header.location),t.notify({entity:i._key._value._current.value,message:"OGAPI_DEVICE_UPDATED",type:"success",percentage:90}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})})}).catch(function(e){t.notify("OGAPI_SOMETHING_WRONG_UPDATING_DEVICE"),t.reject(e)}),t.promise}},{key:"patch",value:function(){var e=this,t=y.default.defer(),r=this._obj,n=[],i=this;return this._wrappers.forEach(function(e){n.push({wrapper:e,promise:e.execute(t,20)})}),y.default.allSettled(n.reduce(function(e,t){return e.push(t.promise),e},[])).then(function(){return t.notify({message:"OGAPI_201_ENTITIES_CREATED",type:"success",percentage:40}),t.notify({entity:i._key._value._current.value,message:"OGAPI_ADDING_RELATED_ENTITIES",type:"success",percentage:45}),e._setUrlParameters({flattened:!0}),i._ogapi.Napi.patch(i._url,r,e._timeout,null,e._getUrlParameters()).then(function(e){e.statusCode===h.default.OK?("function"==typeof i._onCreated&&i._onCreated(e.header.location),t.notify({entity:i._key._value._current.value,message:"OGAPI_DEVICE_UPDATED",type:"success",percentage:90}),t.resolve({location:e.header.location,statusCode:e.statusCode})):t.reject({errors:e.errors,statusCode:e.statusCode})})}).catch(function(e){t.notify("OGAPI_SOMETHING_WRONG_UPDATING_DEVICE"),t.reject(e)}),t.promise}},{key:"delete",value:function(e,t){var r=this;return this._ogapi.Napi.delete(this._urlWithKey()).then(function(n){e.notify({entity:r._key,message:"OGAPI_ENTITY_DELETED",type:"warning",percentage:t})})}}]),e}(),g=function(){function e(t,r,n,i){o(this,e),this._obj=r,this._url=n,this._ogapi=t,this._key=i,this._created=!1}return u(e,[{key:"_urlWithKey",value:function(){return this._url+"/"+this._key}},{key:"_checkExists",value:function(){return this._ogapi.Napi.get(this._urlWithKey()).then(function(e){return e.statusCode===h.default.OK}).catch(function(e){return console.warn(e),!1})}},{key:"execute",value:function(e,t){function r(e,t,r){i._obj["provision.administration.serviceGroup"]="emptyServiceGroup",i._ogapi.Napi.post(i._url,i._obj,null,null,{flattened:!0}).then(function(n){i._created=!0,e.notify({entity:i._key,message:"OGAPI_ENTITY_CREATED",type:"success",percentage:r}),t.resolve({message:"OGAPI_ENTITY_CREATED",entity:i._key})}).catch(function(n){console.error(n),e.notify({entity:i._key,message:"OGAPI_ENTITY_CREATED",type:"warning",percentage:r}),t.reject({entity:i._key,message:"OGAPI_SOMETHING_WRONG_CREATING"})})}var n=y.default.defer(),i=this;return this._checkExists().then(function(o){o?n.resolve({message:"OGAPI_ENTITY_ALREADY_CREATED",entity:i._key}):r(e,n,t)}).catch(function(o){o?n.resolve({message:"OGAPI_ENTITY_ALREADY_CREATED",entity:i._key}):r(e,n,t)}),n.promise}},{key:"delete",value:function(e,t){var r=this;return this._created?this._ogapi.Napi.delete(this._urlWithKey()).then(function(n){e.notify({entity:r._key,message:"OGAPI_ENTITY_DELETED",type:"warning",percentage:t})}):Q.fcall(function(){})}}]),e}(),b=function(e){function t(e,r,n,i,u,s){o(this,t),a(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e,r+"/devices",n,i,u,s),this._organization=r}return i(t,e),u(t,[{key:"create",value:function(){return this._checkRequiredParameters(),new _(this._ogapi,this._composeElement(),this._resource,this._getEntityKey(),this._getUrlParameters(),this._timeout).create()}},{key:"update",value:function(){return new _(this._ogapi,this._composeElement(),this._buildURL(),this._getEntityKey(),this._getUrlParameters(),this._timeout).update()}},{key:"_getEntityKey",value:function(){return this._entity["provision.device.identifier"]}}]),t}(c.default);r.default=b,t.exports=r.default},{"./ComplexBuilder":239,"./SubscriberBuilder":246,"./SubscriptionBuilder":247,"http-status-codes":76,jsonpath:104,q:117}],242:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0)throw new Error(JSON.stringify(t).replace(new RegExp('"',"g"),""))}},{key:"_composeElement",value:function(){return this._validate(),this._entity}},{key:"getEntityKey",value:function(){return null!==this._getEntityKey()?this._getEntityKey()._value._current.value:null}},{key:"with",value:function(e,t){return void 0!==t&&0!==t.length||y.default.isArray(t)?1!==this.getAllowedDatastreams().filter(function(t){return t.identifier===e}).length?(console.warn("Datastream not found or operations can not be performed on it. This value will be ignored. Datastream Name: "+e),this):(this._entity[e]={_value:{_current:{value:t}}},this):(delete this._entity[e],this)}},{key:"getAllowedDatastreams",value:function(){return this._allowedDatastreams}},{key:"initFromFlattened",value:function(e){var t=this;e&&Object.keys(e).length>0&&Object.keys(e).forEach(function(r){if(r.toLowerCase().startsWith("provision")){var n=e[r];Array.isArray(n)&&(n=n[0]),t.with(r,n._value._current.value)}})}},{key:"_initFromJson",value:function(e,t){var r=this;if(e){Object.keys(e).forEach(function(n){var i=e[n],o=i._current,a=t?t+"."+n:n;o?r.with(a,o.value):Array.isArray(i)?r._initFromJson(i[0],a+"[]"):r._initFromJson(i,a)})}}},{key:"initFromJson",value:function(e){var t=this,r={};e&&(r=e.provision)&&t._initFromJson(r,"provision")}},{key:"deleteAll",value:function(){var e=h.default.defer(),t=e.promise;return this._setUrlParameters({full:!0}),this._ogapi.Napi.delete(this._buildURL(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){t.statusCode===c.default.OK?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"update",value:function(){var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}},{key:"patch",value:function(){var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.patch(this._buildURL(),this._composeUpdateElement(),this._timeout,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(f.default);r.default=m,t.exports=r.default},{"../BaseProvision":235,"http-status-codes":76,lodash:111,q:117}],246:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error("Parameter organization must be a string, cannot be empty and has a maximum length of 50");return this._organization=e,this}},{key:"withChannel",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter channel must be a string, cannot be empty and has a maximum length of 50");return this._channel=e,this}},{key:"withIdentifier",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter identifier must be a string, cannot be empty and has a maximum length of 50");return this._identifier=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>50)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of 50");return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withJavascript",value:function(e){if("string"!=typeof e)throw new Error("Parameter name must be a string and cannot be empty");return this._javascript=e,this}},{key:"withMode",value:function(e){return this._mode=e,this}},{key:"withType",value:function(e){return this._type=e,this}},{key:"withActive",value:function(e){if("boolean"!=typeof e)throw new Error("Parameter active must be true or false");return this._active=e,this}},{key:"withActionsDelay",value:function(e){if("number"!=typeof e)throw new Error("Parameter actionsDelay must be a number");return this._actionsDelay=e,this}},{key:"withCondition",value:function(e){return this._condition=e||{},this}},{key:"withActions",value:function(e){return this._actions=e||{},this}},{key:"withParameters",value:function(e){return this._parameters=e||[],this}},{key:"_composeElement",value:function(){return{identifier:this._identifier,name:this._name,active:this._active,mode:this._mode,type:this._type,severity:this._severity,description:this._description?this._description:void 0,parameters:this._parameters,condition:"EASY"===this._mode?this._condition:void 0,actionsDelay:this._actionsDelay,actions:"EASY"===this._mode?this._actions:void 0,javascript:"ADVANCED"===this._mode?this._javascript:void 0}}},{key:"_checkRequiredParameters",value:function(e){if(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel||void 0===this._active||void 0===this._mode)throw new Error("Parameters organization, channel, active, mode and identifier must be defined")}else if(void 0===this._name||void 0===this._organization||void 0===this._channel||void 0===this._active||void 0===this._mode)throw new Error("Parameters organization, channel, active, mode and name must be defined")}},{key:"_buildURL",value:function(){return"rules/"+this._resource+"/"+this._organization+"/channels/"+this._channel+"/"}},{key:"create",value:function(){return this._checkRequiredParameters(),this._doNorthPost(this._buildURL(),this._composeElement())}},{key:"update",value:function(){return this._checkRequiredParameters(!0),this._doNorthPut(this._buildURL()+this._identifier,this._composeElement())}},{key:"updateParameters",value:function(e){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel)throw new Error("Parameters organization, channel and identifier must be defined");return this._doNorthPut(this._buildURL()+this._identifier+"/parameters",e||this._parameters||[])}},{key:"delete",value:function(){if(void 0===this._identifier||void 0===this._organization||void 0===this._channel)throw new Error("Parameters organization, channel and name must be defined");var e=h.default.defer(),t=e.promise;return this._ogapi.Napi.delete(this._buildURL()+this._identifier).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=p,t.exports=r.default},{"../provision/BaseProvision":235,"./_RuleCondition":255,"./_RuleNotification":256,q:117}],252:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0){for(var n in this._condition.parameters){var i=this._condition.parameters[n];if(i.name===e){if(void 0===i.value)throw new Error("Value not allowed for parameter "+e+" in condition "+this._condition.name);return i.value=t||"",r}}throw new Error("Parameter "+e+" not exists for condition "+this._condition.name)}}},{key:"parent",value:function(){return this._ruleConfiguration}}]),e}();r.default=u,t.exports=r.default},{"./RuleConfigurations":251}],256:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0){for(var n in this._notification.bearers){var i=this._notification.bearers[n];if(i.name===e)return i.recipients=t,r}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return r}},{key:"enableBearer",value:function(e){var t=this;if(this._notification.bearers&&this._notification.bearers.length>0){for(var r in this._notification.bearers){var n=this._notification.bearers[r];if(n.name===e)return n.enabled=!0,t}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return t}},{key:"disableBearer",value:function(e){var t=this;if(this._notification.bearers&&this._notification.bearers.length>0){for(var r in this._notification.bearers){var n=this._notification.bearers[r];if(n.name===e)return n.enabled=!1,t}console.warn("Bearer "+e+" not exists for notification "+this._notification.name)}else console.warn("There is no bearers for notification "+this._notification.name);return t}},{key:"parent",value:function(){return this._ruleConfiguration}}]),e}();r.default=u,t.exports=r.default},{"./RuleConfigurations":251}],257:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0?this.cancel=e:this.cancel=!0}},{key:"_loadData",value:function(e){function t(){if(r.cancel||"string"==typeof r.cancel){var a="string"==typeof r.cancel?r.cancel:"Cancel process";n.reject({data:a,statusCode:403}) -}else r._ogapi.Napi.post(r._resource,i,r._timeout,r._getExtraHeaders(),r._getUrlParameters(),r._getServiceBaseURL()).then(function(r){var a=r.statusCode,u=r.body;if(!u&&r.text)try{var s=JSON.parse(r.text);s&&(u=s)}catch(e){console.error("Impossible to parse text from response")}if(200===a||200===a){o=!0;var c=u.data?u.data[e]:u[e];n.notify(c),c.length===i.limit.size?(i.limit.start+=1,t()):n.resolve({data:"DONE",statusCode:200})}else o?n.resolve({data:"DONE",statusCode:200}):n.reject({data:u,statusCode:a})}).catch(function(e){n.reject(e)})}var r=this,n=u.default.defer(),i=r._asyncPagingFilter(),o=!1;return t(),n.promise}},{key:"executeWithAsyncPaging",value:function(e){var t=u.default.defer(),r=t.promise;return this._loadData(e).then(function(e){t.resolve(e)},null,function(e){t.notify(e)}).catch(function(e){t.reject(e)}),r}},{key:"_getServiceBaseURL",value:function(){return this._serviceBaseURL}}]),e}());r.default=c,t.exports=r.default},{merge:112,q:117}],259:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var o=!1,a=r&&r.flattened||!1;for(o=0;o0){var o=!1,a=r&&r.flattened||!1;for(o=0;o1||1===a&&!o,s={};switch(o?s[o]=i[o]:s=i,e._contentType){case"operationalStatus":for(var c in s)s[c].forEach(function(r){(!e._customFilters.id||e._customFilters.id&&e._customFilters.id===r)&&t.push({entityType:c,id:r})});break;case"administrativeState":var l=function(e){var r=e;r.entityType=d,t.push(r)};for(var d in s){var h=s[d];for(var p in h)if(u){for(var y in e._customFilters)if(h[p][y]===e._customFilters[y]){l(h[p]);break}}else l(h[p])}break;case"fieldsDefinition":case"communicationsModuleType":var m=u&&e._customFilters.type;if(void 0===m){r.resolve({error:"Filters not allowed",statusCode:400});break}var v=m?s[m]:s;t=v;break;case"userProfile":for(var _ in s)(!e._customFilters.id||e._customFilters.id&&e._customFilters.id===_)&&s[_].length>0&&t.push({id:_,managed:s[_]});break;case"serviceGroups":o&&(t=s[o]);break;case"allowedResourceType":for(var g in s)(!e._customFilters.type||e._customFilters.type&&s[g].types.indexOf(e._customFilters.type)>-1)&&t.push(s[g].resourceType);break;case"ticketSeverity":case"ticketPriority":case"ticketStatus":case"ruleConfigurationSeverity":case"ruleMode":case"ruleType":case"ioTDatastreamPeriod":case"ioTDatastreamAccess":case"resourceType":case"countryCodes":case"timezones":case"userLanguages":case"ioTDatastreamStoragePeriod":if(m){r.resolve({error:"Filters not supported",statuscode:400});break}t=t.concat(s);break;default:r.resolve({data:{},statusCode:400})}if(t&&Object.keys(t).length>0){var b={};b[e._contentType]=t,r.resolve({data:b,statusCode:200})}else r.resolve({data:{},statusCode:204});return n}},{key:"_content",value:function(e){return{ticketSeverity:["CRITICAL","URGENT","WARNING","NORMAL"],ticketPriority:["MAJOR","MINOR","CRITICAL","BLOCKER"],ticketStatus:["CREATED","ASSIGNED","ANSWERED","RESTORED","RESOLVED","CLOSED"],serviceGroups:{ASSET:["noUpdate","emptyServiceGroup","emptyServiceGroup_onSession","emptyServiceGroup_onDemand","level1SecurityServiceGroup","level2SecurityServiceGroup","level3SecurityServiceGroup","trustedNoneSecurityServiceGroup","trustedNoneSecurityServiceGroup_onDemand","trustedLevel1SecurityServiceGroup","trustedLevel2SecurityServiceGroup","trustedLevel3SecurityServiceGroup"],SUBSCRIBER:["emptyServiceGroup"],SUBSCRIPTION:["emptyServiceGroup"],GATEWAY:["noUpdate","emptyServiceGroup","emptyServiceGroup_onSession","emptyServiceGroup_onDemand","level1SecurityServiceGroup","level2SecurityServiceGroup","level3SecurityServiceGroup","trustedNoneSecurityServiceGroup","trustedNoneSecurityServiceGroup_onDemand","trustedLevel1SecurityServiceGroup","trustedLevel2SecurityServiceGroup","trustedLevel3SecurityServiceGroup"]},administrativeState:{ASSET:[{id:"BANNED",description:"Asset banned, It means that received information of this asset is not going to be collected"},{id:"DELETED",description:"Asset removed from available stock"},{id:"IN_MAINTENANCE",description:"Asset in maintenance"},{id:"IN_STOCK",description:"Asset in stock"},{id:"IN_TRANSIT",description:"Asset in transit"},{id:"IN_USE",description:"Asset in use"},{id:"MISSING",description:"Asset missing"},{id:"ORDERED",description:"Asset ordered"},{id:"READY",description:"Asset ready for installation"},{id:"RETIRED",description:"Field entity withdrawal"}],GATEWAY:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],COMMUNICATIONS_MODULE:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],SUBSCRIBER:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],SUBSCRIPTION:[{id:"REQUESTED",description:"Entity requested to the supplier"},{id:"READY",description:"Entity ready for installation"},{id:"REPAIR",description:"Entity under repair"},{id:"TESTING",description:"Entity in tests"},{id:"ACTIVE",description:"Field deployed entity"},{id:"SUSPENDED",description:"Suspended its operation"},{id:"DELETED",description:"Entity removed from available stock"},{id:"RETIRED",description:"Field entity withdrawal"},{id:"BANNED",description:"Entity banned, It means that received information of this entity is not going to be collected"}],CERTIFICATE:[{id:"NOT_ACTIVE",description:"NOT_ACTIVE"},{id:"ACTIVE",description:"ACTIVE"},{id:"REVOKED",description:"REVOKED"},{id:"EXPIRED",description:"EXPIRED"}]},operationalStatus:{ASSET:["UNKNOWN","NORMAL","ALARM","DOWN","SAFE_MODE","TAMPER","TEST"],GATEWAY:["UNKNOWN","NORMAL","ALARM","DOWN","SAFE_MODE","TAMPER","TEST"],COMMUNICATIONS_MODULE:["UNKNOWN","STOPPED","STARTING","RUNNING","STOPPING","ERROR"]},communicationsModuleType:{ADSL:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","administrativeState","description","ADDRESS","HOME_OPERATOR","LOCATION"]}},CAN:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},ETH:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["subscriptionName","description","administrativeState","ADDRESS"]}},GENERIC:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","description","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","subscriberName","description","administrativeState","ICC","SERIAL_NUMBER"]}},GSM:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","description","administrativeState","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","subscriberName","description","administrativeState","ICC"]}},HAN:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},I2C:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},LOWPAN:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","subscriptionName","description"]}},LTE_M:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","administrativeState","description","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","subscriberName","administrativeState","description","ICC"]}},MESH:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]}},MOBILE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","administrativeState","description","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE","SUBSCRIPTION_ICC"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","subscriberName","administrativeState","description","ICC"]}},MULTIMOBILE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:[],optional:["generatedEntityKey","subscriptionName","administrativeState","description","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","MSISDN","LOCATION","RADIUS_USERNAME","RADIUS_PASSWORD","RADIUS_FRAMED_IP_NETMASK","MSISDN_VOICE","SUBSCRIPTION_ICC"]},SUBSCRIBER:{mandatory:[],optional:["generatedEntityKey","subscriberName","administrativeState","description","ICC"]}},NARROWBAND:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["IMEI","HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","subscriptionName","description","IMSI","ADDRESS","HOME_OPERATOR","REGISTER_OPERATOR","LOCATION"]},SUBSCRIBER:{mandatory:["generatedEntityKey"],optional:["administrativeState","subscriberName","description","ICC"]}},PLC:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","subscriptionName","description"]}},RS232:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},RS422:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},RS485:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:[]}},SIGFOX:{COMMUNICATIONS_MODULE:{mandatory:["entityKey"],optional:["PAC"]},SUBSCRIPTION:{mandatory:["generatedEntityKey","subscriptionName","HOME_OPERATOR","administrativeState","description","SIGFOX_DEVICE_TYPE"]}},ZIGBEE:{COMMUNICATIONS_MODULE:{mandatory:["generatedEntityKey"],optional:["HARDWARE","SOFTWARE"]},SUBSCRIPTION:{mandatory:["generatedEntityKey"],optional:["administrativeState","subscriptionName","description"]}}},ruleMode:["EASY","ADVANCED"],ruleType:["DATASTREAM","OPERATION","EVENT"],ruleConfigurationSeverity:["INFORMATIVE","URGENT","CRITICAL"],userProfile:{root:["admin_domain","admin","advanced","viewer"],admin_domain:["admin_domain","admin","advanced","viewer"],admin:["admin","advanced","viewer"],advanced:[],viewer:[]},ioTDatastreamAccess:["READ","WRITE"],ioTDatastreamStoragePeriod:["SECONDS","MINUTES","HOURS","DAYS","MONTHS","YEARS","NEVER"],ioTDatastreamPeriod:["PULSE","CUMULATIVE","INSTANT"],resourceType:[{identifier:"entity.asset"},{identifier:"entity.device"},{identifier:"ticket"}],allowedResourceType:[{resourceType:"entity.asset",types:["entity","asset"]},{resourceType:"entity.device",types:["entity","device"]},{resourceType:"entity.subscriber",types:["entity","subscriber"]},{resourceType:"entity.subscription",types:["entity","subscription"]},{resourceType:"ticket",types:["ticket"]},{resourceType:"organization",types:["organization"]},{resourceType:"channel",types:["channel"]}],fieldsDefinition:{string:{description:"Text based value",subtype:["text","password"]},boolean:{description:"Boolean based value",subtype:[]},calendar:{description:"Format is described in the ISO 8601 or in http://www.w3.org/TR/NOTE-datetime",subtype:["datetime","date","time"]},address:{description:"Network address value",subtype:["ip","ipv4","ipv6","mac48"]},number:{description:"Numeric value",subtype:["integer","float","percentage"]},enumeration:{description:"Choice list values",subtype:["string","number"]},array:{description:"Array of values",subtype:["string","number"]},coordinates:{description:"Object indicating coordinates and timestamp in geotime subtype",subtype:["geo","geotime","geojson"]},topology:{description:"Object indicating relations",subtype:["path","tree (not supported yet)"]},object:{description:"Not yet supported. For future uses only",subtype:[]}},userLanguages:[{code:"es",language:"Español/Spanish"},{code:"en",language:"Inglés/English"}],countryCodes:[{code:"AD",country:"Andorra",zone:"Europe/Andorra"},{code:"AE",country:"United Arab Emirates",zone:"Asia/Dubai"},{code:"AF",country:"Afghanistan",zone:"Asia/Kabul"},{code:"AG",country:"Antigua and Barbuda",zone:"America/Antigua"},{code:"AI",country:"Anguilla",zone:"America/Anguilla"},{code:"AL",country:"Albania",zone:"Europe/Tirane"},{code:"AM",country:"Armenia",zone:"Asia/Yerevan"},{code:"AN",country:"Netherlands Antilles",zone:"Netherlands Antilles"},{code:"AO",country:"Angola",zone:"Africa/Luanda"},{code:"AQ",country:"Antarctica",zone:"Antarctica/McMurdo"},{code:"AR",country:"Argentina",zone:"America/Argentina/Buenos_Aires"},{code:"AS",country:"American Samoa",zone:"Pacific/Pago_Pago"},{code:"AT",country:"Austria",zone:"Europe/Vienna"},{code:"AU",country:"Australia",zone:"Australia/Lord_Howe"},{code:"AW",country:"Aruba",zone:"America/Aruba"},{code:"AX",country:"Aland Islands",zone:"Europe/Mariehamn"},{code:"AZ",country:"Azerbaijan",zone:"Asia/Baku"},{code:"BA",country:"Bosnia and Herzegovina",zone:"Europe/Sarajevo"},{code:"BB",country:"Barbados",zone:"America/Barbados"},{code:"BD",country:"Bangladesh",zone:"Asia/Dhaka"},{code:"BE",country:"Belgium",zone:"Europe/Brussels"},{code:"BF",country:"Burkina Faso",zone:"Africa/Ouagadougou"},{code:"BG",country:"Bulgaria",zone:"Europe/Sofia"},{code:"BH",country:"Bahrain",zone:"Asia/Bahrain"},{code:"BI",country:"Burundi",zone:"Africa/Bujumbura"},{code:"BJ",country:"Benin",zone:"Africa/Porto-Novo"},{code:"BL",country:"Saint Barthélemy",zone:"America/St_Barthelemy"},{code:"BM",country:"Bermuda",zone:"Atlantic/Bermuda"},{code:"BN",country:"Brunei",zone:"Asia/Brunei"},{code:"BO",country:"Bolivia",zone:"America/La_Paz"},{code:"BQ",country:"Bonaire, Saint Eustatius and Saba",zone:"America/Kralendijk"},{code:"BR",country:"Brazil",zone:"America/Noronha"},{code:"BS",country:"Bahamas",zone:"America/Nassau"},{code:"BT",country:"Bhutan",zone:"Asia/Thimphu"},{code:"BV",country:"Bouvet Island",zone:"Bouvet Island"},{code:"BW",country:"Botswana",zone:"Africa/Gaborone"},{code:"BY",country:"Belarus",zone:"Europe/Minsk"},{code:"BZ",country:"Belize",zone:"America/Belize"},{code:"CA",country:"Canada",zone:"America/St_Johns"},{code:"CC",country:"Cocos Islands",zone:"Indian/Cocos"},{code:"CD",country:"Democratic Republic of the Congo",zone:"Africa/Kinshasa"},{code:"CF",country:"Central African Republic",zone:"Africa/Bangui"},{code:"CG",country:"Republic of the Congo",zone:"Africa/Brazzaville"},{code:"CH",country:"Switzerland",zone:"Europe/Zurich"},{code:"CI",country:"Ivory Coast",zone:"Africa/Abidjan"},{code:"CK",country:"Cook Islands",zone:"Pacific/Rarotonga"},{code:"CL",country:"Chile",zone:"America/Santiago"},{code:"CM",country:"Cameroon",zone:"Africa/Douala"},{code:"CN",country:"China",zone:"Asia/Shanghai"},{code:"CO",country:"Colombia",zone:"America/Bogota"},{code:"CR",country:"Costa Rica",zone:"America/Costa_Rica"},{code:"CS",country:"Serbia and Montenegro",zone:"Serbia and Montenegro"},{code:"CU",country:"Cuba",zone:"America/Havana"},{code:"CV",country:"Cape Verde",zone:"Atlantic/Cape_Verde"},{code:"CW",country:"Curaçao",zone:"America/Curacao"},{code:"CX",country:"Christmas Island",zone:"Indian/Christmas"},{code:"CY",country:"Cyprus",zone:"Asia/Nicosia"},{code:"CZ",country:"Czech Republic",zone:"Europe/Prague"},{code:"DE",country:"Germany",zone:"Europe/Berlin"},{code:"DJ",country:"Djibouti",zone:"Africa/Djibouti"},{code:"DK",country:"Denmark",zone:"Europe/Copenhagen"},{code:"DM",country:"Dominica",zone:"America/Dominica"},{code:"DO",country:"Dominican Republic",zone:"America/Santo_Domingo"},{code:"DZ",country:"Algeria",zone:"Africa/Algiers"},{code:"EC",country:"Ecuador",zone:"America/Guayaquil"},{code:"EE",country:"Estonia",zone:"Europe/Tallinn"},{code:"EG",country:"Egypt",zone:"Africa/Cairo"},{code:"EH",country:"Western Sahara",zone:"Africa/El_Aaiun"},{code:"ER",country:"Eritrea",zone:"Africa/Asmara"},{code:"ES",country:"Spain",zone:"Europe/Madrid"},{code:"ET",country:"Ethiopia",zone:"Africa/Addis_Ababa"},{code:"FI",country:"Finland",zone:"Europe/Helsinki"},{code:"FJ",country:"Fiji",zone:"Pacific/Fiji"},{code:"FK",country:"Falkland Islands",zone:"Atlantic/Stanley"},{code:"FM",country:"Micronesia",zone:"Pacific/Chuuk"},{code:"FO",country:"Faroe Islands",zone:"Atlantic/Faroe"},{code:"FR",country:"France",zone:"Europe/Paris"},{code:"GA",country:"Gabon",zone:"Africa/Libreville"},{code:"GB",country:"United Kingdom",zone:"Europe/London"},{code:"GD",country:"Grenada",zone:"America/Grenada"},{code:"GE",country:"Georgia",zone:"Asia/Tbilisi"},{code:"GF",country:"French Guiana",zone:"America/Cayenne"},{code:"GG",country:"Guernsey",zone:"Europe/Guernsey"},{code:"GH",country:"Ghana",zone:"Africa/Accra"},{code:"GI",country:"Gibraltar",zone:"Europe/Gibraltar"},{code:"GL",country:"Greenland",zone:"America/Godthab"},{code:"GM",country:"Gambia",zone:"Africa/Banjul"},{code:"GN",country:"Guinea",zone:"Africa/Conakry"},{code:"GP",country:"Guadeloupe",zone:"America/Guadeloupe"},{code:"GQ",country:"Equatorial Guinea",zone:"Africa/Malabo"},{code:"GR",country:"Greece",zone:"Europe/Athens"},{code:"GS",country:"South Georgia and the South Sandwich Islands",zone:"Atlantic/South_Georgia"},{code:"GT",country:"Guatemala",zone:"America/Guatemala"},{code:"GU",country:"Guam",zone:"Pacific/Guam"},{code:"GW",country:"Guinea-Bissau",zone:"Africa/Bissau"},{code:"GY",country:"Guyana",zone:"America/Guyana"},{code:"HK",country:"Hong Kong",zone:"Asia/Hong_Kong"},{code:"HM",country:"Heard Island and McDonald Islands",zone:"Heard Island and McDonald Islands"},{code:"HN",country:"Honduras",zone:"America/Tegucigalpa"},{code:"HR",country:"Croatia",zone:"Europe/Zagreb"},{code:"HT",country:"Haiti",zone:"America/Port-au-Prince"},{code:"HU",country:"Hungary",zone:"Europe/Budapest"},{code:"ID",country:"Indonesia",zone:"Asia/Jakarta"},{code:"IE",country:"Ireland",zone:"Europe/Dublin"},{code:"IL",country:"Israel",zone:"Asia/Jerusalem"},{code:"IM",country:"Isle of Man",zone:"Europe/Isle_of_Man"},{code:"IN",country:"India",zone:"Asia/Kolkata"},{code:"IO",country:"British Indian Ocean Territory",zone:"Indian/Chagos"},{code:"IQ",country:"Iraq",zone:"Asia/Baghdad"},{code:"IR",country:"Iran",zone:"Asia/Tehran"},{code:"IS",country:"Iceland",zone:"Atlantic/Reykjavik"},{code:"IT",country:"Italy",zone:"Europe/Rome"},{code:"JE",country:"Jersey",zone:"Europe/Jersey"},{code:"JM",country:"Jamaica",zone:"America/Jamaica"},{code:"JO",country:"Jordan",zone:"Asia/Amman"},{code:"JP",country:"Japan",zone:"Asia/Tokyo"},{code:"KE",country:"Kenya",zone:"Africa/Nairobi"},{code:"KG",country:"Kyrgyzstan",zone:"Asia/Bishkek"},{code:"KH",country:"Cambodia",zone:"Asia/Phnom_Penh"},{code:"KI",country:"Kiribati",zone:"Pacific/Tarawa"},{code:"KM",country:"Comoros",zone:"Indian/Comoro"},{code:"KN",country:"Saint Kitts and Nevis",zone:"America/St_Kitts"},{code:"KP",country:"North Korea",zone:"Asia/Pyongyang"},{code:"KR",country:"South Korea",zone:"Asia/Seoul"},{code:"KW",country:"Kuwait",zone:"Asia/Kuwait"},{code:"KY",country:"Cayman Islands",zone:"America/Cayman"},{code:"KZ",country:"Kazakhstan",zone:"Asia/Almaty"},{code:"LA",country:"Laos",zone:"Asia/Vientiane"},{code:"LB",country:"Lebanon",zone:"Asia/Beirut"},{code:"LC",country:"Saint Lucia",zone:"America/St_Lucia"},{code:"LI",country:"Liechtenstein",zone:"Europe/Vaduz"},{code:"LK",country:"Sri Lanka",zone:"Asia/Colombo"},{code:"LR",country:"Liberia",zone:"Africa/Monrovia"},{code:"LS",country:"Lesotho",zone:"Africa/Maseru"},{code:"LT",country:"Lithuania",zone:"Europe/Vilnius"},{code:"LU",country:"Luxembourg",zone:"Europe/Luxembourg"},{code:"LV",country:"Latvia",zone:"Europe/Riga"},{code:"LY",country:"Libya",zone:"Africa/Tripoli"},{code:"MA",country:"Morocco",zone:"Africa/Casablanca"},{code:"MC",country:"Monaco",zone:"Europe/Monaco"},{code:"MD",country:"Moldova",zone:"Europe/Chisinau"},{code:"ME",country:"Montenegro",zone:"Europe/Podgorica"},{code:"MF",country:"Saint Martin",zone:"America/Marigot"},{code:"MG",country:"Madagascar",zone:"Indian/Antananarivo"},{code:"MH",country:"Marshall Islands",zone:"Pacific/Majuro"},{code:"MK",country:"Macedonia",zone:"Europe/Skopje"},{code:"ML",country:"Mali",zone:"Africa/Bamako"},{code:"MM",country:"Myanmar",zone:"Asia/Yangon"},{code:"MN",country:"Mongolia",zone:"Asia/Ulaanbaatar"},{code:"MO",country:"Macao",zone:"Asia/Macau"},{code:"MP",country:"Northern Mariana Islands",zone:"Pacific/Saipan"},{code:"MQ",country:"Martinique", -zone:"America/Martinique"},{code:"MR",country:"Mauritania",zone:"Africa/Nouakchott"},{code:"MS",country:"Montserrat",zone:"America/Montserrat"},{code:"MT",country:"Malta",zone:"Europe/Malta"},{code:"MU",country:"Mauritius",zone:"Indian/Mauritius"},{code:"MV",country:"Maldives",zone:"Indian/Maldives"},{code:"MW",country:"Malawi",zone:"Africa/Blantyre"},{code:"MX",country:"Mexico",zone:"America/Mexico_City"},{code:"MY",country:"Malaysia",zone:"Asia/Kuala_Lumpur"},{code:"MZ",country:"Mozambique",zone:"Africa/Maputo"},{code:"NA",country:"Namibia",zone:"Africa/Windhoek"},{code:"NC",country:"New Caledonia",zone:"Pacific/Noumea"},{code:"NE",country:"Niger",zone:"Africa/Niamey"},{code:"NF",country:"Norfolk Island",zone:"Pacific/Norfolk"},{code:"NG",country:"Nigeria",zone:"Africa/Lagos"},{code:"NI",country:"Nicaragua",zone:"America/Managua"},{code:"NL",country:"Netherlands",zone:"Europe/Amsterdam"},{code:"NO",country:"Norway",zone:"Europe/Oslo"},{code:"NP",country:"Nepal",zone:"Asia/Kathmandu"},{code:"NR",country:"Nauru",zone:"Pacific/Nauru"},{code:"NU",country:"Niue",zone:"Pacific/Niue"},{code:"NZ",country:"New Zealand",zone:"Pacific/Auckland"},{code:"OM",country:"Oman",zone:"Asia/Muscat"},{code:"PA",country:"Panama",zone:"America/Panama"},{code:"PE",country:"Peru",zone:"America/Lima"},{code:"PF",country:"French Polynesia",zone:"Pacific/Tahiti"},{code:"PG",country:"Papua New Guinea",zone:"Pacific/Port_Moresby"},{code:"PH",country:"Philippines",zone:"Asia/Manila"},{code:"PK",country:"Pakistan",zone:"Asia/Karachi"},{code:"PL",country:"Poland",zone:"Europe/Warsaw"},{code:"PM",country:"Saint Pierre and Miquelon",zone:"America/Miquelon"},{code:"PN",country:"Pitcairn",zone:"Pacific/Pitcairn"},{code:"PR",country:"Puerto Rico",zone:"America/Puerto_Rico"},{code:"PS",country:"Palestinian Territory",zone:"Asia/Gaza"},{code:"PT",country:"Portugal",zone:"Europe/Lisbon"},{code:"PW",country:"Palau",zone:"Pacific/Palau"},{code:"PY",country:"Paraguay",zone:"America/Asuncion"},{code:"QA",country:"Qatar",zone:"Asia/Qatar"},{code:"RE",country:"Reunion",zone:"Indian/Reunion"},{code:"RO",country:"Romania",zone:"Europe/Bucharest"},{code:"RS",country:"Serbia",zone:"Europe/Belgrade"},{code:"RU",country:"Russia",zone:"Europe/Kaliningrad"},{code:"RW",country:"Rwanda",zone:"Africa/Kigali"},{code:"SA",country:"Saudi Arabia",zone:"Asia/Riyadh"},{code:"SB",country:"Solomon Islands",zone:"Pacific/Guadalcanal"},{code:"SC",country:"Seychelles",zone:"Indian/Mahe"},{code:"SD",country:"Sudan",zone:"Africa/Khartoum"},{code:"SE",country:"Sweden",zone:"Europe/Stockholm"},{code:"SG",country:"Singapore",zone:"Asia/Singapore"},{code:"SH",country:"Saint Helena",zone:"Atlantic/St_Helena"},{code:"SI",country:"Slovenia",zone:"Europe/Ljubljana"},{code:"SJ",country:"Svalbard and Jan Mayen",zone:"Arctic/Longyearbyen"},{code:"SK",country:"Slovakia",zone:"Europe/Bratislava"},{code:"SL",country:"Sierra Leone",zone:"Africa/Freetown"},{code:"SM",country:"San Marino",zone:"Europe/San_Marino"},{code:"SN",country:"Senegal",zone:"Africa/Dakar"},{code:"SO",country:"Somalia",zone:"Africa/Mogadishu"},{code:"SR",country:"Suriname",zone:"America/Paramaribo"},{code:"SS",country:"South Sudan",zone:"Africa/Juba"},{code:"ST",country:"Sao Tome and Principe",zone:"Africa/Sao_Tome"},{code:"SV",country:"El Salvador",zone:"America/El_Salvador"},{code:"SX",country:"Sint Maarten",zone:"America/Lower_Princes"},{code:"SY",country:"Syria",zone:"Asia/Damascus"},{code:"SZ",country:"Swaziland",zone:"Africa/Mbabane"},{code:"TC",country:"Turks and Caicos Islands",zone:"America/Grand_Turk"},{code:"TD",country:"Chad",zone:"Africa/Ndjamena"},{code:"TF",country:"French Southern Territories",zone:"Indian/Kerguelen"},{code:"TG",country:"Togo",zone:"Africa/Lome"},{code:"TH",country:"Thailand",zone:"Asia/Bangkok"},{code:"TJ",country:"Tajikistan",zone:"Asia/Dushanbe"},{code:"TK",country:"Tokelau",zone:"Pacific/Fakaofo"},{code:"TL",country:"East Timor",zone:"Asia/Dili"},{code:"TM",country:"Turkmenistan",zone:"Asia/Ashgabat"},{code:"TN",country:"Tunisia",zone:"Africa/Tunis"},{code:"TO",country:"Tonga",zone:"Pacific/Tongatapu"},{code:"TR",country:"Turkey",zone:"Europe/Istanbul"},{code:"TT",country:"Trinidad and Tobago",zone:"America/Port_of_Spain"},{code:"TV",country:"Tuvalu",zone:"Pacific/Funafuti"},{code:"TW",country:"Taiwan",zone:"Asia/Taipei"},{code:"TZ",country:"Tanzania",zone:"Africa/Dar_es_Salaam"},{code:"UA",country:"Ukraine",zone:"Europe/Kiev"},{code:"UG",country:"Uganda",zone:"Africa/Kampala"},{code:"UM",country:"United States Minor Outlying Islands",zone:"Pacific/Midway"},{code:"US",country:"United States",zone:"America/New_York"},{code:"UY",country:"Uruguay",zone:"America/Montevideo"},{code:"UZ",country:"Uzbekistan",zone:"Asia/Samarkand"},{code:"VA",country:"Vatican",zone:"Europe/Vatican"},{code:"VC",country:"Saint Vincent and the Grenadines",zone:"America/St_Vincent"},{code:"VE",country:"Venezuela",zone:"America/Caracas"},{code:"VG",country:"British Virgin Islands",zone:"America/Tortola"},{code:"VI",country:"U.S. Virgin Islands",zone:"America/St_Thomas"},{code:"VN",country:"Vietnam",zone:"Asia/Ho_Chi_Minh"},{code:"VU",country:"Vanuatu",zone:"Pacific/Efate"},{code:"WF",country:"Wallis and Futuna",zone:"Pacific/Wallis"},{code:"WS",country:"Samoa",zone:"Pacific/Apia"},{code:"XK",country:"Kosovo",zone:"Kosovo"},{code:"YE",country:"Yemen",zone:"Asia/Aden"},{code:"YT",country:"Mayotte",zone:"Indian/Mayotte"},{code:"ZA",country:"South Africa",zone:"Africa/Johannesburg"},{code:"ZM",country:"Zambia",zone:"Africa/Lusaka"},{code:"ZW",country:"Zimbabwe",zone:"Africa/Harare"}],timezones:["ACT","AET","Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","AGT","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port_of_Spain","America/Port-au-Prince","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","ART","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","AST","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/North","Australia/NSW","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","BET","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","BST","Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","CAT","CET","Chile/Continental","Chile/EasterIsland","CNT","CST","CST6CDT","CTT","Cuba","EAT","ECT","EET","Egypt","Eire","EST","EST5EDT","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT0","Greenwich","Hongkong","HST","Iceland","IET","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","IST","Jamaica","Japan","JST","Kwajalein","Libya","MET","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","MIT","MST","MST7MDT","Navajo","NET","NST","NZ","NZ-CHAT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","PLT","PNT","Poland","Portugal","PRC","PRT","PST","PST8PDT","ROK","Singapore","SST","SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT","SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7","SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT","SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","Universal","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Pacific-New","US/Samoa","UTC","VST","W-SU","WET","Zulu"]}[e]}}]),t}(c.default);r.default=d,t.exports=r.default},{"./Search":262,q:117}],265:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}},{key:"group",value:function(e){return this._builderParams.group=e||{},this}},{key:"build",value:function(){return new h.default(this._parent,this._buildUrl(),this._buildFilter(),this._buildLimit(),this._buildSort(),this._buildGroup(),this._buildSelect(),this._builderParams.timeout,this._urlParams)}},{key:"select",value:function(e){return this._builderParams.select=e||void 0,this}}]),t}(c.default);r.default=y,t.exports=r.default},{"../../util/searchingFields/FieldFinder":342,"../AssetSearch":257,"./PreFilteredSearchBuilder":303}],271:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0&&void 0!==t&&Object.keys(t).length>0)throw new Error("Incompatible filters. You only can create a filter using fluent mode [betweenDates, addTag, withDatastreamId, withDeviceId] methods or custom filter [filter] method");return void 0!==r&&Object.keys(r).length>0?e.filter=r:void 0!==t&&Object.keys(t).length>0&&(e.filter=t),e}},{key:"select",value:function(e){return this._builderParams.select=e,this}}]),t}(c.default);r.default=_,t.exports=r.default},{"../../util/DATE_FORMAT":336,"../../util/searchingFields/FieldFinder":342,"./SearchBuilder":307,merge:112,moment:113}],281:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}},{key:"group",value:function(e){return this._builderParams.group=e||{},this}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":342,"./PreFilteredSearchBuilder":303}],287:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var r=0,n=!1;for(r=0;r0){var t=0;for(t=0;t0&&void 0!==t&&Object.keys(t).length>0)throw new Error("Incompatible filters. You only can create a filter using fluent mode [withId, withName, withVersion, withType, withHardwareId, withModel, withModelVersion, withManufacturer] methods or custom filter [filter] method");return void 0!==r&&Object.keys(r).length>0?e.filter=r:void 0!==t&&Object.keys(t).length>0&&(e.filter=t),e}}]),t}(c.default);r.default=m},{"../../util/searchingFields/FieldFinder":342,"./SearchWithSummaryBuilder":308,merge:112}],311:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":342,"./PreFilteredSearchBuilder":303}],312:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r0){var t=this._builderParams.filter;void 0!==t._filterTemplate?e.and.push(t._filterTemplate.filter):e.and.push(t)}return{filter:e}}}]),t}(c.default);r.default=h,t.exports=r.default},{"../../util/searchingFields/FieldFinder":342,"./PreFilteredSearchBuilder":303}],313:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(e,t,r){for(var n=!0;n;){var i=e,o=t,a=r;n=!1,null===i&&(i=Function.prototype);var u=Object.getOwnPropertyDescriptor(i,o);if(void 0!==u){if("value"in u)return u.value;var s=u.get;if(void 0===s)return;return s.call(a)}var c=Object.getPrototypeOf(i);if(null===c)return;e=c,t=o,r=a,n=!0,u=c=void 0}},u=e("./SearchWithSummaryBuilder"),s=n(u),c=e("../../util/searchingFields/FieldFinder"),l=n(c),f="/tasks",d=function(e){function t(e){i(this,t),a(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e,{},new l.default(e,f)),this._url=f}return o(t,e),t}(s.default);r.default=d,t.exports=r.default},{"../../util/searchingFields/FieldFinder":342,"./SearchWithSummaryBuilder":308}],314:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r, mimetype allowed <'"+JSON.stringify(p.MIME_TYPES_ENUM)+"'>");return this._id=e,this._type=t,this._download()}},{key:"_download",value:function(){var e=f.default.defer(),t=e.promise,r=this._error_not_found;return this._api.get(this._downloadUrl(),void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){204===t.statusCode?e.reject({data:r,statusCode:h.default.NOT_FOUND}):e.resolve({data:t,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(c.default);r.default=y,t.exports=r.default},{"../ProvisionGenericFinder":140,"./MIME_TYPES_ENUM":327,"http-status-codes":76,q:117}],326:[function(require,module,exports){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var r=0;rmax_length_id)throw new Error("Parameter id must be a string, cannot be empty and has a maximum length of "+max_length_id);return this._id=e,this}},{key:"withName",value:function(e){if("string"!=typeof e||0===e.length||e.length>max_length_name)throw new Error("Parameter name must be a string, cannot be empty and has a maximum length of "+max_length_name);return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||0===e.length||e.length>max_length_description)throw new Error("Parameter description must be a string, cannot be empty and has a maximum length of "+max_length_description);return this._description=e,this}},{key:"withAdministrativeState",value:function(e){if("string"!=typeof e||e.length<=0)throw new Error("Parameter administrativeState must be typeof string and cannot be empty");var t="";if(void 0===_ADMINISTRATIVE_STATE_ENUM.ADMINISTRATIVE_STATE_ENUM.find(function(e){return e==this},e)&&(t=e),""!==t)throw new Error("Parameter in administrativeState is not allowed. Parameter value '"+JSON.stringify(t)+"', parameters allowed in administrativeState are: '"+JSON.stringify(_ADMINISTRATIVE_STATE_ENUM.ADMINISTRATIVE_STATE_ENUM)+"'");return this._administrativeState=e,this}},{key:"withUsages",value:function(e){if(void 0===e||e.constructor!==Array||0===e.length)throw new Error("Parameter usages must be typeof Array and cannot be empty");for(var t=[],r=0;r0?valid=!0:3===length&&hardware.manufacturer&&hardware.model&&hardware.modelVersion&&"string"==typeof hardware.manufacturer&&"string"==typeof hardware.model&&"string"==typeof hardware.modelVersion&&hardware.manufacturer.length>0&&hardware.model.length>0&&hardware.modelVersion.length>0&&(valid=!0),valid}},{key:"withTags",value:function(e){if(void 0===e||e.constructor!==Array||e.length<=0)throw new Error("Parameter tags must be typeof Array and cannot be empty");for(var t=[],r=0;r0&&f.default._checkStringAndPattern(this._bucketColumn,"^[a-zA-Z0-9 _-]*$","bucketColumn"),{name:this._name,description:this._description,timeBucket:this._timeBucket,bucketColumn:this._timeBucket?this._bucketColumn:void 0,retention:this._retention,origin:this._origin,context:this._context||[],identifierColumn:this._identifierColumn,columns:this._columns||[]}}},{key:"update",value:function(){throw new Error("OGAPI_TIMESERIES_NOT_UPDATED")}}]),t}(c.default);r.default=h},{"../provision/BaseProvision":235,"../util/formats/check_types":341}],331:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"identifier"});return this._identifier=e,this}},{key:"withOrganization",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"organization"});return this._organization=e,this}},{key:"addFile",value:function(e){this._files||(this._files=[]),this._files.push(e)}},{key:"withFiles",value:function(e){if(!(e instanceof Array))throw new Error({message:"Parameter files requires an array",parameter:"files"});this._files=e}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource=this._organization+"/transformers",{files:this._files||void 0}}},{key:"_composeUpdateElement",value:function(){var e=u(Object.getPrototypeOf(t.prototype),"_composeUpdateElement",this).call(this);return delete e.name,e}},{key:"performTest",value:function(e){var t=c.default.defer(),r=t.promise;return this._ogapi.Napi.post(this._buildURL()+"/transform",e,this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){t.resolve({statusCode:e.statusCode,body:e.body})}).catch(function(e){t.reject(e)}),r}},{key:"create",value:function(){var e=this._composeElement(),t=c.default.defer();return this._ogapi.Napi.post_multipart(this._resource,{files:e.files},{},this._timeout,this._getExtraHeaders(),this._getUrlParameters(),this._getServiceBaseURL()).then(function(e){switch(e.statusCode){case 200:var r=""!=e.text?JSON.parse(e.text):{},n=e.status;t.resolve({data:r,statusCode:n});break;case 201:var n=e.status,i=e.header&&e.header.location;t.resolve({location:i,statusCode:n});break;case 204:t.resolve(e);break;default:t.reject({errors:e.data.errors,statusCode:e.statusCode})}}).catch(function(e){t.reject(e)}),t.promise}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}],334:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r100)throw new Error("Parameter name must be a string and has a maximum length of 100");return this._name=e,this}},{key:"withSurname",value:function(e){if("string"!=typeof e||e.length>100)throw new Error("Parameter surname must be a string and has a maximum length of 100");return this._surname=e,this}},{key:"withEmail",value:function(e){if("string"!=typeof e||e.length>100)throw new Error("Parameter email must be a string and has a maximum length of 100");return this._email=e,this}},{key:"withPassword",value:function(e){if("string"!=typeof e||e.length>50)throw new Error("Parameter password must be a string and has a maximum length of 50");return this._password=e,this}},{key:"withWorkgroup",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_WORKGROUP");return this._workgroup=e,this}},{key:"withDomain",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_DOMAIN");return this._domain=e,this}},{key:"withProfile",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_PROFILE");return this._profile=e,this}},{key:"withCountryCode",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_COUNTRY_CODE");return this._countryCode=e,this}},{key:"withLangCode",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_LANGUAGE");return this._langCode=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_DESCRIPTION");return this._description=e,this}},{key:"withTimezone",value:function(e){if("string"!=typeof e)throw new Error("OGAPI_STRING_PARAMETER_TIMEZONE");return this._timezone=e,this}},{key:"_buildURL",value:function(){if(void 0===this._email)throw new Error("OGAPI_EMAIL_MUST_BE_DEFINED");return this._resource+"/"+this._email}},{key:"_composeElement",value:function(){return{user:{name:this._name||void 0,surname:this._surname||void 0,password:this._password||void 0,description:this._description||void 0,email:this._email||void 0,workgroup:this._workgroup||void 0,domain:this._domain||void 0,profile:this._profile||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timezone||void 0}}}},{key:"_composeUpdateElement",value:function(){if(this._password)throw new Error("OGAPI_PASSWORD_NOT_ALLOWED");if(void 0===this._email)throw new Error("OGAPI_USER_UPDATE_PARAMETER_MUST_BE_DEFINED");return{user:{name:this._name||void 0,surname:this._surname||void 0,description:this._description||void 0,email:this._email||void 0,workgroup:this._workgroup||void 0,domain:this._domain||void 0,profile:this._profile||void 0,countryCode:this._countryCode||void 0,langCode:this._langCode||void 0,timezone:this._timezone||void 0}}}},{key:"_post",value:function(e,t){var r=f.default.defer(),n=r.promise;return this._ogapi.Napi.post(e,t,void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(e){200===e.statusCode?r.resolve({statusCode:e.statusCode}):200===e.status?r.resolve({statusCode:e.status}):r.reject({errors:e.errors,statusCode:e.statusCode})}).catch(function(e){r.reject(e)}),n}},{key:"updatePassword",value:function(e){if(this._newPassword=e,h.default.isEmpty(this._email)||h.default.isEmpty(this._password)||h.default.isEmpty(this._newPassword))throw new Error("OGAPI_USER_UPDATE_PASSWORD_PARAMETER_MUST_BE_DEFINED");var t={user:{password:this._newPassword}};return this._setExtraHeaders({"X-ApiPass":this._password}),this._doNorthPost(this._buildURL(),t)}},{key:"requestResetPassword",value:function(){if(h.default.isEmpty(this._email))throw new Error("OGAPI_USER_MAIL_RESET_PASSWORD_PARAMETER_MUST_BE_DEFINED");var e=this._buildURL()+"/reset";return this._doNorthPost(e)}},{key:"updatePassword",value:function(e,t){if(this._newPassword=e,this._tokenId=t,h.default.isEmpty(this._email))throw new Error("OGAPI_USER_MAIL_RESET_PASSWORD_PARAMETER_MUST_BE_DEFINED");if(h.default.isEmpty(this._newPassword))throw new Error("OGAPI_USER_PASSWORD_RESET_PASSWORD_PARAMETER_MUST_BE_DEFINED");if(h.default.isEmpty(t))throw new Error("OGAPI_USER_TOKENID_RESET_PASSWORD_PARAMETER_MUST_BE_DEFINED");var r={password:this._newPassword},n=this._buildURL()+"/reset/"+t;return this._doNorthPost(n,r)}}]),t}(c.default);r.default=p,t.exports=r.default},{"../provision/BaseProvision":235,lodash:111,q:117}],336:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.DATE_FORMAT="";r.TIME_FORMAT="HH:mm:ssZ"},{}],337:[function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0){var r=e.substring(e.indexOf("?"),e.length),i=e.substring(0,e.indexOf("?"));n.push((0,c.default)(i)+r)}else n.push((0,c.default)(e))}),this._url(this._options)+"/"+this._getDefaultBaseURL(r)+"/"+n.join("/")}},{key:"_getDefaultBaseURL",value:function(e){return e||(this._isSouth?"v80":"north/v80")}},{key:"_createPromiseRequest",value:function(e,t,r,n,i){var o=r;void 0!==o&&null!==o||(o=this._options.timeout);var a=h.default.defer(),u=a.promise,s=this._options.apiKey,c=-1===o?e:e.timeout(o);if(s&&(c=c.set("X-ApiKey",this._options.apiKey)),n)for(var l=Object.keys(n),f=0;ft)throw new Error([{message:"OGAPI_STRING_PARAMETER",parameter:r},{message:"OGAPI_MAX_LENGTH",parameter:t}])},_checkString:function(e,t){if("string"!=typeof e)throw new Error([{message:"OGAPI_STRING_PARAMETER",parameter:t}])},_checkNumber:function(e,t){if("number"!=typeof e)throw new Error([{message:"OGAPI_NUMBER_PARAMETER",parameter:t}])},_checkArray:function(e,t){if(!Array.isArray(e)||0===e.length)throw new Error({message:"OGAPI_ARRAY_PARAMETER",parameter:t})},_checkObject:function(e,t){if("object"!=typeof e)throw new Error({message:"OGAPI_OBJECT_PARAMETER",parameter:t})}}},{}],342:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(r,"__esModule",{value:!0});var a,u=function(){function e(e,t){for(var r=0;r=0)return"complex";switch(g[e]){case"SearchOnDatamodel":return D;case"SearchOnDataset":return"dataset";case"SearchOnTimeseries":return"timeserie";default:return"simple"}}},k=function(e,t){function r(e){for(var t=!0;t;){var r=e;t=!1;{if(!(r.length>0&&r[0].constructor===Array))return r;r=r.reduce(function(e,t){return e.concat(t)}),e=r,t=!0}}}var n=c.default.defer(),i=t.selectedField,o=t.selectAll,a=t.extraData&&t.extraData.organization,u=e._ogapi.datamodelsSearchBuilder(),s={and:[]};return e._resourceTypes&&s.and.push({in:{"datamodels.allowedResourceTypes":e._resourceTypes}}),a&&s.and.push({eq:{"datamodels.organizationName":a}}),i&&s.and.push({eq:{"datamodels.categories.datastreams.identifier":i}}),s.and.length>0&&u.filter(s),u.build().execute().then(function(e){var t=[];200===e.statusCode&&(t=e.data.datamodels.map(function(e){return(e.categories||[]).map(function(e){return(e.datastreams||[]).map(function(e){return i||o?e:e.identifier})})}),t=r(t)),i?n.resolve(t.find(function(e){return i===e.identifier})):n.resolve(t)}).catch(function(e){n.reject(e)}),n.promise},T=function(e,t,r,n){var i=r.selectedField,o=[],a=r.extraData.organization,u=r.extraData[t.entity];e._ogapi[t.api]()[t.method](a,u).then(function(t){if(200===t.statusCode){t.data.identifierColumn&&o.push({identifier:t.data.identifierColumn,name:t.data.identifierColumn,path:"provision.administration.identifier._current.value",indexed:!0,sort:!0,notFilterable:!1,filter:"YES",type:"string",schema:{type:"string"}}),t.data.bucketColumn&&o.push({identifier:t.data.bucketColumn,name:t.data.bucketColumn,path:"provision.administration.identifier._current.at",indexed:!0,sort:!0,notFilterable:!1,filter:"YES",type:"date-time",schema:{type:"string",format:"datetime"}});var a=f.default.concat(t.data.columns||[],t.data.context||[]);e._ogapi.basicTypesSearchBuilder().withPath("$").build().execute().then(function(t){t.data.definitions;if(r.selectAll=!0,i){a=a.filter(function(e){return i===(e.name||e.alias)});var u=a[0],s=u.path.match(v),c=s[1].replace(_,"[]");r.selectedField=c}k(e,r).then(function(e){a.forEach(function(t){"date-time"!==t.type?t.schema={type:t.type}:t.schema={type:"string",format:"datetime"},t.path.endsWith("._current.value")&&function(){var r=t.path.substring(0,t.path.indexOf("._current.value"));Array.isArray(e)&&e.find(function(e){return r===e.identifier})}(),t.identifier=t.name||t.alias,t.indexed="NO"!==t.filter,t.notFilterable="NO"===t.filter,o.push(t)}),n.resolve(o)}).catch(function(e){console.error(e),n.reject(e)})}).catch(function(e){console.error(e),n.reject(e)})}}).catch(function(e){console.error(e),n.reject(e)})},F=(a={},o(a,D,function(e,t){k(this,e).then(function(e){t.resolve(e)}).catch(function(e){t.reject(e)})}),o(a,"simple",function(e,t){var r=e.context,n=e.primaryType,i=e.selectedField,o=[];if(r[n]instanceof Array)i?function(){var e=0,t=null;for(e=0;null===t&&e-1&&o.push(r[n][a[u]]);else for(var a=Object.keys(r[n]),u=0;u50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"name"});return this._name=e,this}},{key:"withDescription",value:function(e){if("string"!=typeof e||e.length>250)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_250",parameter:"description"});return this._description=e,this}},{key:"withAdministrative",value:function(e){return this._administrative=e,this}},{key:"withDomainName",value:function(e){if("string"!=typeof e||e.length>50)throw new Error({message:"OGAPI_STRING_PARAMETER_MAX_LENGTH_50",parameter:"domainName"});return this._domainName=e,this}},{key:"_composeElement",value:function(){return this._checkRequiredParameters(),this._resource="provision/domains/"+this._domainName+"/workgroups",{workgroup:{name:this._name||void 0,description:this._description||void 0,administrative:this._administrative||!1}}}},{key:"_composeElementUpdate",value:function(){return this._checkRequiredParameters(), -this._resource="provision/domains/"+this._domainName+"/workgroups",{workgroup:{description:this._description||void 0}}}},{key:"_buildURL",value:function(){return"provision/domains/"+this._domainName+"/workgroups/"+this._name}},{key:"update",value:function(){var e=c.default.defer(),t=e.promise;return this._ogapi.Napi.put(this._buildURL(),this._composeElementUpdate(),void 0,this._getExtraHeaders(),this._getUrlParameters()).then(function(t){200===t.statusCode?e.resolve({statusCode:t.statusCode}):200===t.status?e.resolve({statusCode:t.status}):e.reject({errors:t.errors,statusCode:t.statusCode})}).catch(function(t){e.reject(t)}),t}}]),t}(f.default);r.default=d,t.exports=r.default},{"../provision/BaseProvision":235,q:117}]},{},[1]); -//# sourceMappingURL=opengate-api-bower-12.0.0.min.js.map diff --git a/dist/opengate-api-bower-12.0.0.min.js.map b/dist/opengate-api-bower-12.0.0.min.js.map deleted file mode 100644 index 92c3cbb69..000000000 --- a/dist/opengate-api-bower-12.0.0.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["opengate-api-bower.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","_get","_x","_x2","_x3","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","get","parent","getPrototypeOf","_srcInternalOpenGateAPI","_srcInternalOpenGateAPI2","_srcUtilNorthAmpliaREST","_srcUtilNorthAmpliaREST2","_srcUtilSouthAmpliaREST","_srcUtilSouthAmpliaREST2","OpenGateAPI","_InternalOpenGateAPI","_options","this","window","./src/InternalOpenGateAPI","./src/util/NorthAmpliaREST","./src/util/SouthAmpliaREST","2","Ajv","opts","_opts","util","copy","setLogger","_schemas","_refs","_fragments","_formats","formats","format","_cache","cache","Cache","_loadingSchemas","_compilations","RULES","rules","_getId","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","serialize","stableStringify","_metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","addInitialKeywords","addDefaultMetaSchema","meta","addMetaSchema","nullable","addKeyword","metaSchema","type","addInitialSchemas","validate","schemaKeyRef","data","v","getSchema","schemaObj","_addSchema","_compile","valid","$async","errors","compile","schema","_meta","addSchema","key","_skipValidation","Array","isArray","id","resolve","normalizeId","checkUnique","skipValidation","validateSchema","throwOrLogError","$schema","defaultMeta","logger","warn","message","errorsText","error","self","META_SCHEMA_ID","keyRef","_getSchemaObj","_getSchemaFragment","ref","res","root","baseId","compileSchema","SchemaObject","fragment","removeSchema","RegExp","_removeAllSchemas","clear","del","cacheKey","schemas","regex","test","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","localRefs","ids","put","callValidate","_validate","result","apply","arguments","compiling","currentOpts","refs","refVal","schemaId","_get$IdOrId","_get$Id","$id","options","separator","dataVar","text","dataPath","slice","addFormat","name","$dataSchema","$data","$dataMetaSchema","META_SUPPORT_DATA","optsSchemas","keyword","metaOpts","META_IGNORE_OPTIONS","log","noop","console","compileAsync","customKeyword","add","getKeyword","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json","./refs/json-schema-draft-07.json","fast-json-stable-stringify","3","4","callback","loadMetaSchemaOf","sch","$ref","Promise","_compileAsync","removePromise","added","missingSchema","missingRef","schemaPromise","loadSchema","then","p","./error_classes","5","ajv","validation","url","fullPath","errorSubclass","Subclass","./resolve","6","mode","isLeapYear","year","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","split","DATE_TIME_SEPARATOR","uri","NOT_URI_FRAGMENT","URI","Z_ANCHOR","HOSTNAME","URIREF","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","fast","date-time","uri-reference","uri-template","email","hostname","ipv4","ipv6","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","./util","7","compilation","localCompile","_schema","_root","isRoot","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","processCode","equal","ucs2length","source","code","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","defaultsHash","rule","parentSchema","it","deps","definition","dependencies","every","hasOwnProperty","join","macro","c","checkCompiling","cv","endCompiling","compIndex","splice","arr","statement","../dotjs/validate","fast-deep-equal","8","resolveSchema","parse","refPath","_getFullPath","getFullPath","keys","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","count","SIMPLE_INLINED","normalize","replace","TRAILING_SLASH_HASH","resolveIds","baseIds","","fullPaths","traverse","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","toHash","./schema_obj","json-schema-traverse","uri-js","9","ruleModules","maximum","minimum","properties","ALL","KEYWORDS","TYPES","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","concat","custom","../dotjs","10","11","len","pos","charCodeAt","12","to","checkDataType","dataType","strictNumbers","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","hash","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","varReplace","expr","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","b","decodeURIComponent","encodeURIComponent","./ucs2length","13","keywordsJsonPointers","JSON","stringify","j","anyOf","14","definitions","simpleTypes","statements","not","required","items","modifying","async","const","15","$keyword","$ruleType","$errorKeyword","$schemaValue","out","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opExpr","$opStr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","16","17","unicode","18","19","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","20","$valid","$errs","$wasComposite","21","22","23","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","24","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","25","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$prop","$useData","$propertyPath","$missingProperty","arr2","i2","l2","26","$vSchema","27","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","indexOf","$formatRef","28","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","29","allOf","contains","enum","if","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","30","$additionalItems","additionalItems","$currErrSchemaPath","31","multipleOfPrecision","32","$allErrorsOption","33","$prevValid","$passingSchemas","34","$regexp","35","notProto","$key","$dataProperties","$schemaKeys","filter","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","arr4","i4","l4","36","$invalidName","37","$refCode","$refVal","$message","missingRefs","__callValidate","38","$propertySch","$loopRequired","39","$itemType","$typeIsArray","$method","40","$shouldUseGroup","$rulesGroup","$shouldUseRule","$ruleImplementsSomeKeyword","impl","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$dataType","$coerced","$type","arr5","i5","l5","41","_addRule","ruleGroup","rg","throwError","_validateKeyword","definitionSchema","./definition_schema","./dotjs/custom","42","description","43","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","44","replacer","isUndefined","isNaN","isFinite","isFunction","isRegExp","toString","truncate","isString","getMessage","actual","operator","expected","fail","stackStartFunction","assert","AssertionError","ok","_deepEqual","isBuffer","isDate","getTime","global","multiline","lastIndex","ignoreCase","isObject","objEquiv","isArguments","isNullOrUndefined","pSlice","ka","objectKeys","kb","sort","expectedException","_throws","shouldThrow","block","hasOwn","generatedMessage","captureStackTrace","err","stack","fn_name","idx","next_line","substring","inherits","notEqual","deepEqual","notDeepEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","util/","45","ctor","superCtor","super_","TempCtor","46","arg","fill","readUInt8","47","process","inspect","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","val","recurseTimes","ret","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","isError","formatError","Date","base","braces","toUTCString","output","formatArray","formatProperty","reduceToSingleString","simple","isNull","l","String","set","line","substr","numLinesEst","reduce","prev","cur","ar","isSymbol","re","objectToString","d","isPrimitive","pad","timestamp","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","objects","args","x","Number","_","deprecate","fn","msg","deprecated","warned","throwDeprecation","traceDeprecation","trace","noDeprecation","debugEnviron","debugs","debuglog","env","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","string","regexp","origin","./support/isBuffer","FWaASH","48","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","tmp","placeHolders","charAt","Arr","uint8ToBase64","uint8","encode","num","temp","extraBytes","Uint8Array","toByteArray","fromByteArray","base64js","49","50","nextTick","canSetImmediate","setImmediate","canPost","postMessage","addEventListener","queue","ev","stopPropagation","shift","setTimeout","browser","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","51","assertEncoding","encoding","Buffer","isEncoding","passThroughWrite","buffer","utf16DetectIncompleteChar","incomplete","charReceived","charLength","base64DetectIncompleteChar","StringDecoder","toLowerCase","surrogateSize","detectIncompleteChar","write","charBuffer","charStr","offset","charCode","lenIncomplete","end","size","cr","buf","enc","52","subject","noZero","stringtrim","coerce","byteLength","_useTypedArrays","_augment","_isBuffer","_set","isArrayish","_hexWrite","remaining","strLen","byte","parseInt","_charsWritten","_utf8Write","blitBuffer","utf8ToBytes","_asciiWrite","asciiToBytes","_binaryWrite","_base64Write","base64ToBytes","_utf16leWrite","utf16leToBytes","_base64Slice","start","base64","_utf8Slice","min","decodeUtf8Char","fromCharCode","_asciiSlice","_binarySlice","_hexSlice","toHex","_utf16leSlice","bytes","_readUInt16","littleEndian","noAssert","_readUInt32","_readInt16","_readInt32","_readFloat","ieee754","read","_readDouble","_writeUInt16","verifuint","_writeUInt32","_writeInt16","verifsint","_writeInt32","_writeFloat","verifIEEE754","_writeDouble","trim","clamp","defaultValue","ceil","byteArray","h","hi","lo","src","dst","max","floor","SlowBuffer","INSPECT_MAX_BYTES","poolSize","ArrayBuffer","foo","subarray","list","totalLength","swap","toJSON","_arr","target","target_start","sliceLen","newBuf","writeUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","toArrayBuffer","BP","toLocaleString","base64-js","53","Emitter","mixin","event","_callbacks","removeEventListener","callbacks","cb","listeners","hasListeners","54","isExpression","node","CodeGenerator","Expression","isStatement","Statement","getDefaultOptions","indent","comment","adjustMultilineComment","newline","space","json","renumber","hexadecimal","quotes","escapeless","compact","parentheses","semicolons","safeConcatenation","preserveBlankLines","moz","comprehensionExpressionStartsWithAssignment","starlessGenerator","sourceMap","sourceMapRoot","sourceMapWithCode","directive","raw","verbatim","stringRepeat","hasLineTerminator","endsWithLineTerminator","esutils","isLineTerminator","merge","override","updateDeeply","isHashObject","generateNumber","point","exponent","escapeRegExpCharacter","ch","previousIsBackslash","generateRegExp","reg","flags","iz","characterInBrack","escapeAllowedCharacter","next","hex","isDecimalDigit","escapeDisallowedCharacter","escapeDirective","quote","escapeString","single","singleQuotes","doubleQuotes","isIdentifierPartES5","flattenToString","elem","toSourceNodeWhenNeeded","generated","SourceNode","loc","column","noEmptySpace","left","right","leftSource","rightSource","leftCharCode","rightCharCode","isWhiteSpace","addIndent","stmt","withIndent","previousBase","calculateSpaces","specialBase","spaces","sn","MAX_VALUE","generateComment","extra","addComments","save","tailingToStatement","extRange","range","prevRange","prefix","infix","suffix","leadingComments","extendedRange","Syntax","Program","body","trailingComments","generateBlankLines","newlineCount","parenthesize","current","should","generateVerbatimString","generateVerbatim","precedence","prec","Precedence","Sequence","content","generateIdentifier","generateAsyncPrefix","spaceRequired","generateStarSuffix","generator","generateMethodPrefix","func","computed","generateInternal","codegen","generateStatement","S_TFFF","generateExpression","E_TTT","generate","pair","defaultOptions","toStringWithSourceMap","file","sourceRoot","sourceContent","setSourceContent","BinaryPrecedence","estraverse","FORMAT_MINIFY","FORMAT_DEFAULTS","Yield","Assignment","Conditional","ArrowFunction","LogicalOR","LogicalAND","BitwiseOR","BitwiseXOR","BitwiseAND","Equality","Relational","BitwiseSHIFT","Additive","Multiplicative","Exponentiation","Await","Unary","Postfix","Call","New","TaggedTemplate","Member","Primary","||","&&","|","^","&","==","!=","===","!==","is","isnt","<",">","<=",">=","in","instanceof","<<",">>",">>>","+","-","*","%","/","**","F_ALLOW_IN","maybeBlock","noLeadingComment","that","BlockStatement","EmptyStatement","maybeBlockSuffix","ends","generatePattern","Identifier","generateFunctionParams","hasDefault","ArrowFunctionExpression","rest","params","generateAssignment","generateFunctionBody","expression","generateIterationForStatement","await","VariableDeclaration","kind","declarations","generatePropertyKey","semicolon","bodyFlags","BreakStatement","label","ContinueStatement","ClassBody","ClassDeclaration","DirectiveStatement","DoWhileStatement","CatchClause","guard","param","DebuggerStatement","ExportDefaultDeclaration","declaration","ExportNamedDeclaration","specifiers","ExportBatchSpecifier","ExportAllDeclaration","ExpressionStatement","Literal","ImportDeclaration","cursor","ImportDefaultSpecifier","ImportNamespaceSpecifier","VariableDeclarator","itemFlags","F_ALLOW_CALL","init","ThrowStatement","argument","TryStatement","guardedHandlers","handlers","finalizer","handler","SwitchStatement","discriminant","cases","SwitchCase","consequent","IfStatement","semicolonOptional","alternate","ForStatement","update","ForInStatement","ForOfStatement","LabeledStatement","FunctionDeclaration","ReturnStatement","WhileStatement","WithStatement","SequenceExpression","expressions","AssignmentExpression","ConditionalExpression","LogicalExpression","BinaryExpression","leftPrecedence","rightPrecedence","currentPrecedence","CallExpression","callee","NewExpression","MemberExpression","MetaProperty","UnaryExpression","YieldExpression","delegate","AwaitExpression","UpdateExpression","FunctionExpression","ArrayPattern","ArrayExpression","isPattern","elements","RestElement","ClassExpression","MethodDefinition","Property","shorthand","AssignmentPattern","method","ObjectExpression","ObjectPattern","ThisExpression","Super","local","ImportSpecifier","imported","ExportSpecifier","exported","GeneratorExpression","ComprehensionExpression","blocks","ComprehensionBlock","of","SpreadElement","TaggedTemplateExpression","tag","quasi","TemplateElement","TemplateLiteral","quasis","ModuleSpecifier","ImportExpression","flag","replaceRight","version","attachComments","./package.json","source-map","55","clone","deepCopy","upperBound","diff","Reference","Element","path","wrap","Controller","isNode","isProperty","nodeType","visitor","extendCommentRange","tokens","token","tree","providedComments","comments","enter","VisitorOption","Break","Skip","leave","VisitorKeys","BREAK","SKIP","REMOVE","Remove","addToPath","jz","element","__current","__leavelist","parents","__execute","previous","__state","notify","skip","__initialize","__worklist","__fallback","fallback","__keys","assign","worklist","leavelist","current2","candidates","candidate","sentinel","removeElem","nextElem","outer","cloneEnvironment","56","homepage","main","engines","maintainers","web","repository","devDependencies","babel-preset-env","babel-register","chai","espree","gulp","gulp-bump","gulp-filter","gulp-git","gulp-tag-version","jshint","mocha","license","scripts","lint","unit-test","57","ArraySet","_array","hasNativeMap","Map","has","fromArray","aArray","aAllowDuplicates","aStr","sStr","toSetString","isDuplicate","at","aIdx","toArray","58","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","digit","encoded","vlq","VLQ_BASE","aIndex","aOutParam","continuation","./base64","59","intToCharMap","60","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","search","61","generatedPositionAfter","mappingA","mappingB","lineA","generatedLine","lineB","columnA","generatedColumn","columnB","compareByGeneratedPositionsInflated","MappingList","_sorted","_last","unsortedForEach","aCallback","aThisArg","aMapping","62","ary","y","randomIntInRange","low","high","round","random","doQuickSort","comparator","pivotIndex","pivot","q","quickSort","63","SourceMapConsumer","aSourceMap","aSourceMapURL","parseSourceMapInput","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","getArg","sources","names","sourcesContent","mappings","_version","isAbsolute","relative","_names","_sources","_absoluteSources","computeSourceURL","_mappings","_sourceMapURL","Mapping","originalLine","originalColumn","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","base64VLQ","fromSourceMap","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","context","order","_generatedMappings","_originalMappings","mapping","allGeneratedPositionsFor","aArgs","needle","_findSourceIndex","_findMapping","compareByOriginalPositions","lastColumn","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","originalPositionFor","hasContentsOfAllSources","some","sc","sourceContentFor","nullOnMissing","urlParse","fileUriAbsPath","scheme","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","./array-set","./base64-vlq","./binary-search","./quick-sort","64","SourceMapGenerator","_sourcesContents","aSourceMapConsumer","newMapping","original","addMapping","sourceFile","sourceRelative","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","_serializeMappings","nameIdx","sourceIdx","previousGeneratedLine","aSources","./mapping-list","65","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","aChunk","chunk","prepend","unshift","walk","aFn","aSep","newChildren","aPattern","aReplacement","lastChild","walkSourceContents","fromSetString","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","./source-map-generator","66","aDefaultValue","aUrl","urlRegexp","auth","host","port","urlGenerate","aParsedUrl","aPath","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","lastIndexOf","identity","isProtoString","onlyCompareOriginal","strcmp","onlyCompareGenerated","aStr1","aStr2","sourceURL","sourceMapURL","parsed","supportsNullProto","67","./lib/source-map-consumer","./lib/source-map-generator","./lib/source-node","68","bin","esgenerate","escodegen","files","esprima","optionator","optionalDependencies","acorn","bluebird","bower-registry-client","commonjs-everywhere","gulp-eslint","gulp-mocha","semver","release","build-min","build","69","isIterationStatement","isSourceElement","trailingStatement","isProblematicIfStatement","70","isHexDigit","isOctalDigit","NON_ASCII_WHITESPACES","fromCodePoint","cp","isIdentifierStartES5","IDENTIFIER_START","ES5Regex","NonAsciiIdentifierStart","IDENTIFIER_PART","NonAsciiIdentifierPart","isIdentifierStartES6","ES6Regex","isIdentifierPartES6","71","isStrictModeReservedWordES6","isKeywordES5","strict","isKeywordES6","isReservedWordES5","isReservedWordES6","isRestrictedWord","isIdentifierNameES5","decodeUtf16","lead","trail","isIdentifierNameES6","lowCh","check","isIdentifierES5","isIdentifierES6","./code","72","ast","./ast","73","EventEmitter","_events","_maxListeners","defaultMaxListeners","setMaxListeners","er","listener","m","newListener","g","fired","position","listenerCount","emitter","74","valueOf","75","cycles","aobj","bobj","seenIndex","76","statusCodes","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","getStatusText","statusCode","getStatusCode","reasonPhrase","77","DBCSCodec","codecOptions","iconv","encodingName","table","mappingTable","decodeTables","UNASSIGNED_NODE","decodeTableSeq","_addDecodeChunk","defaultCharUnicode","encodeTable","encodeTableSeq","skipEncodeChars","encodeSkipVals","from","_fillEncodeTable","encodeAdd","uChar","_setEncodeChar","defCharSB","defaultCharSingleByte","UNASSIGNED","gb18030","thirdByteNodeIdx","thirdByteNode","fourthByteNodeIdx","fourthByteNode","secondByteNodeIdx","NODE_START","secondByteNode","GB18030_CODE","DBCSEncoder","codec","leadSurrogate","seqObj","DBCSDecoder","nodeIdx","prevBuf","alloc","findIdx","_dbcs","encoder","decoder","_getDecodeTrieNode","addr","curAddr","writeTable","codeTrail","seq","_getEncodeBucket","uCode","dbcsCode","bucket","_setEncodeSequence","oldVal","mbCode","nextChar","resCode","subtable","uChars","gbChars","prevBufOffset","seqStart","curByte","curSeq","ptr","uCodeLead","safer-buffer","78","shiftjis","¥","‾","csshiftjis","mskanji","sjis","windows31j","ms31j","xsjis","windows932","ms932","932","cp932","eucjp","gb2312","gb231280","gb23121980","csgb2312","csiso58gb231280","euccn","windows936","ms936","936","cp936","gbk","xgbk","isoir58","€","chinese","windows949","ms949","949","cp949","cseuckr","csksc56011987","euckr","isoir149","korean","ksc56011987","ksc56011989","ksc5601","windows950","ms950","950","cp950","big5","big5hkscs","cnbig5","csbig5","xxbig5","./tables/big5-added.json","./tables/cp936.json","./tables/cp949.json","./tables/cp950.json","./tables/eucjp.json","./tables/gb18030-ranges.json","./tables/gbk-added.json","./tables/shiftjis.json","79","modules","./dbcs-codec","./dbcs-data","./internal","./sbcs-codec","./sbcs-data","./sbcs-data-generated","./utf16","./utf7","80","InternalCodec","bomAware","InternalEncoderBase64","InternalEncoderCesu8","InternalDecoderCesu8","InternalDecoder","InternalEncoder","prevStr","acc","contBytes","accBytes","utf8","cesu8","unicode11utf8","ucs2","utf16le","binary","_internal","completeQuads","bufIdx","string_decoder","81","SBCSCodec","chars","asciiString","decodeBuf","encodeBuf","SBCSEncoder","SBCSDecoder","_sbcs","idx1","idx2","82","437","737","775","850","852","855","856","857","858","860","861","862","863","864","865","866","869","874","922","1046","1124","1125","1129","1133","1161","1162","1163","1250","1251","1252","1253","1254","1255","1256","1257","1258","28591","28592","28593","28594","28595","28596","28597","28598","28599","28600","28601","28603","28604","28605","28606","windows874","win874","cp874","windows1250","win1250","cp1250","windows1251","win1251","cp1251","windows1252","win1252","cp1252","windows1253","win1253","cp1253","windows1254","win1254","cp1254","windows1255","win1255","cp1255","windows1256","win1256","cp1256","windows1257","win1257","cp1257","windows1258","win1258","cp1258","iso88591","cp28591","iso88592","cp28592","iso88593","cp28593","iso88594","cp28594","iso88595","cp28595","iso88596","cp28596","iso88597","cp28597","iso88598","cp28598","iso88599","cp28599","iso885910","cp28600","iso885911","cp28601","iso885913","cp28603","iso885914","cp28604","iso885915","cp28605","iso885916","cp28606","cp437","ibm437","csibm437","cp737","ibm737","csibm737","cp775","ibm775","csibm775","cp850","ibm850","csibm850","cp852","ibm852","csibm852","cp855","ibm855","csibm855","cp856","ibm856","csibm856","cp857","ibm857","csibm857","cp858","ibm858","csibm858","cp860","ibm860","csibm860","cp861","ibm861","csibm861","cp862","ibm862","csibm862","cp863","ibm863","csibm863","cp864","ibm864","csibm864","cp865","ibm865","csibm865","cp866","ibm866","csibm866","cp869","ibm869","csibm869","cp922","ibm922","csibm922","cp1046","ibm1046","csibm1046","cp1124","ibm1124","csibm1124","cp1125","ibm1125","csibm1125","cp1129","ibm1129","csibm1129","cp1133","ibm1133","csibm1133","cp1161","ibm1161","csibm1161","cp1162","ibm1162","csibm1162","cp1163","ibm1163","csibm1163","maccroatian","maccyrillic","macgreek","maciceland","macroman","macromania","macthai","macturkish","macukraine","koi8r","koi8u","koi8ru","koi8t","armscii8","rk1048","tcvn","georgianacademy","georgianps","pt154","viscii","iso646cn","iso646jp","hproman8","macintosh","ascii","tis620","83","10029","maccenteuro","808","ibm808","cp808","mik","ascii8bit","usascii","ansix34","ansix341968","ansix341986","csascii","cp367","ibm367","isoir6","iso646us","iso646irv","us","latin1","latin2","latin3","latin4","latin5","latin6","latin7","latin8","latin9","latin10","csisolatin1","csisolatin2","csisolatin3","csisolatin4","csisolatincyrillic","csisolatinarabic","csisolatingreek","csisolatinhebrew","csisolatin5","csisolatin6","l6","l7","l8","l9","l10","isoir14","isoir57","isoir100","isoir101","isoir109","isoir110","isoir144","isoir127","isoir126","isoir138","isoir148","isoir157","isoir166","isoir179","isoir199","isoir203","isoir226","cp819","ibm819","cyrillic","arabic","arabic8","ecma114","asmo708","greek","greek8","ecma118","elot928","hebrew","hebrew8","turkish","turkish8","thai","thai8","celtic","celtic8","isoceltic","tis6200","tis62025291","tis62025330","10000","10006","10007","10079","10081","cspc8codepage437","cspc775baltic","cspc850multilingual","cspcp852","cspc862latinhebrew","cpgr","msee","mscyrl","msansi","msgreek","msturk","mshebr","msarab","winbaltrim","cp20866","20866","ibm878","cskoi8r","cp21866","21866","ibm1168","strk10482002","tcvn5712","tcvn57121","gb198880","cn","csiso14jisc6220ro","jisc62201969ro","jp","cshproman8","r8","roman8","xroman8","ibm1051","mac","csmacintosh","84","85","86","87","88","89","90","91","92","Utf16BECodec","Utf16BEEncoder","Utf16BEDecoder","overflowByte","Utf16Codec","Utf16Encoder","addBOM","getEncoder","Utf16Decoder","initialBytes","initialBytesLen","detectEncoding","defaultEncoding","asciiCharsLE","asciiCharsBE","_len","utf16be","buf2","utf16","getDecoder","93","Utf7Codec","Utf7Encoder","Utf7Decoder","inBase64","base64Accum","Utf7IMAPCodec","Utf7IMAPEncoder","base64AccumIdx","Utf7IMAPDecoder","utf7","unicode11utf7","nonDirectChars","bind","base64Regex","base64Chars","plusChar","minusChar","andChar","lastI","b64str","canBeDecoded","utf7imap","base64IMAPChars","94","PrependBOMWrapper","StripBOMWrapper","pass","PrependBOM","StripBOM","stripBOM","95","supportsNodeEncodingsExtension","extendNodeEncodings","nodeNativeEncodings","utf-8","ucs-2","utf-16le","isNativeEncoding","SlowBufferToString","SlowBufferWrite","RangeError","BufferIsEncoding","encodingExists","BufferByteLength","BufferToString","BufferWrite","_offset","_length","_encoding","supportsStreams","Readable","ReadableSetEncoding","setEncoding","_readableState","collect","_collect","undoExtendNodeEncodings","stream","96","bomHandling","encodings","skipDecodeWarning","getCodec","toEncoding","fromEncoding","_codecDataCache","_canonicalizeEncoding","codecDef","nodeVer","versions","nodeVerArr","../encodings","./bom-handling","./extend-node","./streams","97","IconvLiteEncoderStream","conv","decodeStrings","Transform","IconvLiteDecoderStream","encodeStream","decodeStream","_transform","done","_flush","chunks","98","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","pow","rt","abs","LN2","99","100","101","_traverse","pre","post","arrayKeywords","propsKeywords","escapeJsonPtr","skipKeywords","102","factory","define","amd","condition","isIdentifierStart","Regex","isIdentifierPart","isFutureReservedWord","isStrictModeReservedWord","isKeyword","addComment","state","lastCommentStart","attachComment","skipSingleLineComment","lineNumber","lineStart","skipMultiLineComment","Messages","UnexpectedToken","skipComment","scanHexEscape","getEscapedIdentifier","getIdentifier","scanIdentifier","Token","Keyword","NullLiteral","BooleanLiteral","scanPunctuator","code2","ch2","ch3","ch4","ch1","tokenize","openParenToken","openCurlyToken","Punctuator","scanHexLiteral","NumericLiteral","scanOctalLiteral","octal","scanNumericLiteral","parseFloat","scanStringLiteral","unescaped","restore","startLineNumber","startLineStart","StringLiteral","testRegExp","InvalidRegExp","scanRegExpBody","classMarker","terminated","UnterminatedRegExp","literal","scanRegExpFlags","throwErrorTolerant","scanRegExp","lookahead","RegularExpression","collectRegex","isIdentifierName","advanceSlash","prevToken","checkToken","FnExprTokens","advance","EOF","collectToken","TokenName","lex","peek","Position","SourceLocation","startLine","startColumn","peekLineTerminator","found","messageFormat","whole","throwUnexpected","UnexpectedEOS","UnexpectedNumber","UnexpectedString","UnexpectedIdentifier","UnexpectedReserved","StrictReservedWord","expect","expectKeyword","matchKeyword","matchAssign","op","consumeSemicolon","isLeftHandSide","parseArrayInitialiser","startToken","parseAssignmentExpression","markEnd","createArrayExpression","parsePropertyFunction","first","previousStrict","parseFunctionSourceElements","StrictParamName","createFunctionExpression","parseObjectPropertyKey","StrictOctalLiteral","createLiteral","createIdentifier","parseObjectProperty","createProperty","parseVariableIdentifier","parseObjectInitialiser","PropertyKind","Data","Get","Set","StrictDuplicateProperty","AccessorDataProperty","AccessorGetSet","createObjectExpression","parseGroupExpression","parseExpression","parsePrimaryExpression","parseFunctionExpression","createThisExpression","parseArguments","parseNonComputedProperty","parseNonComputedMember","parseComputedMember","parseNewExpression","parseLeftHandSideExpression","createNewExpression","parseLeftHandSideExpressionAllowCall","previousAllowIn","allowIn","createMemberExpression","createCallExpression","parsePostfixExpression","StrictLHSPostfix","InvalidLHSInAssignment","createPostfixExpression","parseUnaryExpression","StrictLHSPrefix","createUnaryExpression","StrictDelete","binaryPrecedence","parseBinaryExpression","marker","markers","createBinaryExpression","parseConditionalExpression","createConditionalExpression","StrictLHSAssignment","createAssignmentExpression","createSequenceExpression","parseStatementList","parseSourceElement","parseBlock","createBlockStatement","parseVariableDeclaration","StrictVarName","createVariableDeclarator","parseVariableDeclarationList","parseVariableStatement","createVariableDeclaration","parseConstLetDeclaration","parseEmptyStatement","createEmptyStatement","parseExpressionStatement","createExpressionStatement","parseIfStatement","parseStatement","createIfStatement","parseDoWhileStatement","oldInIteration","inIteration","createDoWhileStatement","parseWhileStatement","createWhileStatement","parseForVariableDeclaration","parseForStatement","InvalidLHSInForIn","createForStatement","createForInStatement","parseContinueStatement","IllegalContinue","createContinueStatement","labelSet","UnknownLabel","parseBreakStatement","inSwitch","IllegalBreak","createBreakStatement","parseReturnStatement","inFunctionBody","IllegalReturn","createReturnStatement","parseWithStatement","StrictModeWith","createWithStatement","parseSwitchCase","createSwitchCase","parseSwitchStatement","clause","oldInSwitch","defaultFound","createSwitchStatement","MultipleDefaultsInSwitch","parseThrowStatement","NewlineAfterThrow","createThrowStatement","parseCatchClause","StrictCatchVariable","createCatchClause","parseTryStatement","NoCatchOrFinally","createTryStatement","parseDebuggerStatement","createDebuggerStatement","labeledBody","parseFunctionDeclaration","Redeclaration","createLabeledStatement","sourceElement","firstRestricted","oldLabelSet","oldInFunctionBody","sourceElements","parseParams","stricted","paramSet","StrictParamDupe","StrictFunctionName","createFunctionDeclaration","parseSourceElements","parseProgram","createProgram","filterTokenLocation","entry","SyntaxTreeDelegate","tolerant","lexError","program","bottomRightStack","processComment","postProcess","each","accessor","freeze","103","parser","Parser","yy","symbols_","JSON_PATH","DOLLAR","PATH_COMPONENTS","LEADING_CHILD_MEMBER_EXPRESSION","PATH_COMPONENT","MEMBER_COMPONENT","SUBSCRIPT_COMPONENT","CHILD_MEMBER_COMPONENT","DESCENDANT_MEMBER_COMPONENT","DOT","MEMBER_EXPRESSION","DOT_DOT","STAR","SCRIPT_EXPRESSION","INTEGER","END","CHILD_SUBSCRIPT_COMPONENT","DESCENDANT_SUBSCRIPT_COMPONENT","[","SUBSCRIPT","]","SUBSCRIPT_EXPRESSION","SUBSCRIPT_EXPRESSION_LIST","SUBSCRIPT_EXPRESSION_LISTABLE",",","STRING_LITERAL","ARRAY_SLICE","FILTER_EXPRESSION","QQ_STRING","Q_STRING","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","_ast","initialize","$0","yield","operation","scope","$","defaultActions","parseError","recoverable","input","vstack","lstack","recovering","lexer","setInput","yylloc","yyloc","ranges","symbol","preErrorSymbol","action","newState","yyval","errStr","showPosition","first_line","last_line","first_column","last_column","_nodes","_node","_stash","props","_input","_more","_backtrack","matched","conditionStack","unput","lines","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","test_match","indexed_rule","backup","tempMatch","_currentRules","flex","begin","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","exit","readFileSync","fs","104","./lib/index","105","identifier","qq_string","q_string","106","dict","grammar","macros","esc","int","bnf","moduleInclude","actionInclude","./dict","107","eval_recurse","partial","template","aesprim","evaluate","@","results","nodes","is_array","is_object","traverser","recurse","passable","descend","_descend","component","_evaluate","unique","_uniq","_parse_nullable_int","sval","uniq","Handlers","_fns","register","member-child-identifier","member-descendant-identifier","subscript-child-numeric_literal","member-child-numeric_literal","subscript-descendant-numeric_literal","member-child-wildcard","member-descendant-wildcard","subscript-descendant-wildcard","subscript-child-wildcard","subscript-child-slice","values","subscript-child-union","_component","_results","subscript-descendant-union","subscript-child-filter_expression","subscript-descendant-filter_expression","subscript-child-script_expression","member-child-script_expression","member-descendant-script_expression","..","./aesprim","./index","./slice","static-eval","underscore","108","_is_string","JSONPath","_vivify","query","setValue","partials","_partials","templates","descendant-member","child-member","descendant-subscript","child-subscript","_normalize","_path","./handlers","./parser","109","gparser","_parseError","../generated/parser","./grammar","110","step","111","thisArg","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiToArray","asciiWords","reAsciiWord","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","NAN","baseProperty","basePropertyOf","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseTrim","trimmedEndIndex","reTrimStart","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","escapeStringChar","chr","stringEscapes","getValue","hasUnicode","reHasUnicode","hasUnicodeWord","reHasUnicodeWord","iteratorToArray","iterator","mapToArray","overArg","transform","replaceHolders","PLACEHOLDER","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","asciiSize","stringToArray","unicodeToArray","reWhitespace","reUnicode","unicodeWords","reUnicodeWord","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reWrapComment","reWrapDetails","reSplitDetails","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsBreak","rsCombo","rsLower","rsMisc","rsFitz","rsRegional","rsSurrPair","rsUpper","rsMiscLower","reOptMod","rsModifier","rsOptJoin","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","rsMiscUpper","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","htmlEscapes","\"","'","htmlUnescapes","&","<",">",""","'","\\","\n","\r","
","
","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","deburrLetter","escapeHtmlChar","unescapeHtmlChar","runInContext","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","lazyValue","isArr","isRight","arrLength","view","getView","iteratees","iterLength","takeCount","nativeMin","baseWrapperValue","iterIndex","Hash","entries","hashClear","__data__","nativeCreate","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","valuesIndex","baseEvery","baseExtremum","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseForOwn","baseFor","baseForOwnRight","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","symToStringTag","getRawTag","baseGt","other","baseHas","baseHasIn","baseInRange","nativeMax","baseIntersection","arrays","othLength","othIndex","caches","baseInverter","baseInvoke","last","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","reIsNative","toSource","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","nativeKeys","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","newValue","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","indexes","baseUnset","nativeFloor","nativeRandom","baseRange","nativeCeil","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","symbolToString","baseUniq","createSet","baseUpdate","updater","baseWhile","isDrop","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castSlice","allocUnsafe","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","byteOffset","cloneRegExp","exec","cloneSymbol","symbolValueOf","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","composeArgs","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","isIterateeCall","createBaseEach","iterable","createBaseFor","createBind","wrapper","Ctor","isBind","createCtor","createCaseFirst","methodName","trailing","createCompounder","words","deburr","thisBinding","baseCreate","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","reverse","getFuncName","funcName","isLaziable","plant","partialsRight","holdersRight","argPos","holdersCount","newHolders","isBindKey","reorder","isFlip","isAry","createInverter","toIteratee","createMathOperation","createOver","arrayFunc","createPadding","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","nativeIsFinite","createToPairs","createWrap","mergeData","baseSetData","customDefaultsAssignIn","objectProto","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","realNames","otherFunc","isKeyable","getNative","isOwn","unmasked","nativeObjectToString","transforms","getWrapDetails","hasPath","hasFunc","getPrototype","insertWrapDetails","details","spreadableSymbol","maskSrcKey","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","reference","updateWrapDetails","shortOut","lastCalled","stamp","nativeNow","rand","funcToString","drop","dropRight","dropRightWhile","dropWhile","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","head","initial","nativeJoin","nth","pullAll","pullAllBy","pullAllWith","nativeReverse","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","uniqBy","uniqWith","unzip","unzipWith","zipObject","zipObjectDeep","chain","tap","interceptor","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","flatMap","flatMapDeep","flatMapDepth","forEachRight","baseEachRight","orderBy","reduceRight","sample","sampleSize","shuffle","after","before","curry","curryRight","debounce","invokeFunc","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","timeWaiting","maxing","maxWait","shouldInvoke","now","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","flip","memoize","resolver","memoized","spread","throttle","unary","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","isElement","isEmpty","isEqual","isEqualWith","isInteger","isMatch","isMatchWith","isNative","isMaskable","isNil","proto","objectCtorString","isSafeInteger","isWeakMap","isWeakSet","symIterator","remainder","isBinary","toSafeInteger","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","mapKeys","mapValues","omitBy","pickBy","setWith","isArrLike","unset","updateWith","valuesIn","inRange","floating","capitalize","upperFirst","endsWith","escape","escapeRegExp","strLength","padEnd","padStart","radix","nativeParseInt","repeat","startsWith","settings","templateSettings","assignInWith","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trimEnd","trimStart","omission","newEnd","unescape","cond","conforms","constant","defaultTo","matchesProperty","methodNames","noConflict","oldDash","nthArg","propertyOf","stubArray","stubFalse","stubObject","stubString","stubTrue","times","toPath","uniqueId","idCounter","maxBy","mean","meanBy","minBy","sum","sumBy","pick","arrayProto","funcProto","coreJsData","uid","IE_PROTO","Symbol","objectCreate","propertyIsEnumerable","isConcatSpreadable","toStringTag","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","DataView","WeakMap","metaMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","baseSetToString","castRest","ctorString","subString","difference","differenceBy","differenceWith","intersection","mapped","intersectionBy","intersectionWith","pull","pullAt","union","unionBy","unionWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","find","findLast","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","defer","delay","overArgs","funcsLength","partialRight","rearg","gt","gte","lt","lte","assignIn","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","toPairs","toPairsIn","camelCase","word","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","bindAll","flow","flowRight","methodOf","over","overEvery","overSome","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","entriesIn","extend","extendWith","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","112","merge_recursive","typeOf","recursive","sitem","Public","113","moment","hooks","hookCallback","hasOwnProp","isObjectEmpty","createUTC","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecateSimple","deprecations","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","addFormatToken","padded","ordinal","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","unit","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","addRegexToken","strictRegex","regexes","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","mod","modMonth","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","getIsLeapYear","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","localeWeekdays","weekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","commonPrefix","minl","normalizeLocale","chooseLocale","loadLocale","globalLocale","aliasedRequire","oldLocale","locales","_abbr","getSetGlobalLocale","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","updateLocale","tmpLocale","listLocales","checkOverflow","MONTH","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","defaultLocaleMonthsShort","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","defaultLocaleWeekdaysShort","calculateOffset","obsOffset","militaryOffset","numOffset","obsOffsets","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","aspNetJsonRegex","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","w","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","moments","isDurationValid","unitHasDecimal","ordering","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","sign","offsetFromString","matcher","chunkOffset","cloneWithOffset","model","setTime","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","matchShortOffset","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","dur","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","datetime","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","mod$1","localStartOfDate","MS_PER_400_YEARS","utcStartOfDate","startOfDate","isoWeekday","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_SECOND","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","matchUnsigned","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","clone$1","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","ss","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","toISOString$1","totalSign","ymSign","daysSign","hmsSign","abs$1","total","asSeconds","toFixed","fun","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","defaultDayOfMonthOrdinalParse","defaultRelativeTime","future","mm","hh","dd","ww","MM","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysMin","kInput","_isPm","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","dayOfMonthOrdinalParse","meridiemParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","prototypeMin","prototypeMax","invalid","lang","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","114","normalizeArray","allowAboveRoot","basename","matchedSlash","xs","resolvedPath","resolvedAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","115","defaultDelimiter","PATH_REGEXP","escaped","capture","modifier","asterisk","optional","escapeGroup","tokensToFunction","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","isarray","attachKeys","sensitive","regexpToRegexp","groups","arrayToRegexp","pathToRegexp","stringToRegexp","tokensToRegExp","route","endsWithDelimiter","116","117","bootstrap","ses","makeQ","previousQ","Q","uncurryThis","isStopIteration","exception","object_toString","QReturnValue","makeStackTraceLong","promise","hasStacks","stacks","__minimumStackCounter__","stackCounter","object_defineProperty","concatedStacks","STACK_JUMP_SEPARATOR","filterStackString","stackString","desiredLines","isInternalFrame","isNodeFrame","stackLine","getFileNameAndLineNumber","attempt1","attempt2","attempt3","fileNameAndLineNumber","fileName","qFileName","qStartingLine","qEndingLine","captureLine","firstLine","isPromiseAlike","fulfill","become","newPromise","resolvedPromise","longStackSupport","array_reduce","promiseDispatch","progressListeners","deferred","object_create","operands","array_slice","nearerValue","nearer","isPromise","longStackCounter","reason","progress","progressListener","race","answerPs","descriptor","inspected","when","fulfilled","rejected","progressed","isPending","isFulfilled","isRejected","resetUnhandledRejections","unhandledReasons","unhandledRejections","trackUnhandledRejections","trackRejection","runAfter","array_indexOf","reportedUnhandledRejections","untrackRejection","atReport","rejection","rhs","delete","thisp","object_keys","master","isDef","dispatch","makeGenerator","continuer","verb","StopIteration","errback","spawn","_return","promised","promises","pendingCount","snapshot","any","onFulfilled","onRejected","onProgress","allResolved","array_map","allSettled","nodeify","nodeback","task","domain","runSingle","laterQueue","flushing","isNodeJS","requestTick","MessageChannel","channel","port1","onmessage","requestPortTick","port2","basis","Type","object_hasOwnProperty","ReturnValue","Q_DEBUG","makeNodeResolver","passByCopy","makePromise","_fulfilled","_rejected","newException","_progressed","threw","onerror","fcall","thenResolve","thenReject","getUnhandledReasons","stopUnhandledRejectionTracking","mapply","send","mcall","fapply","fbind","alternative","regardless","fin","onUnhandledError","timeout","timeoutId","nfapply","nodeArgs","nfcall","nfbind","denodeify","baseArgs","nbind","bound","nmapply","npost","nsend","nmcall","ninvoke","118","safer","Safer","encodingOrOffset","kStringMaxLength","constants","MAX_LENGTH","kMaxLength","MAX_STRING_LENGTH","119","unparse","FAIL","scopeVars","bodies","oldVars","vals","strings","cooked","120","Duplex","Writable","readable","allowHalfOpen","onend","_writableState","ended","_write","./readable.js","./writable.js","process/browser.js","121","Stream","EE","PassThrough","pipe","dest","ondata","pause","ondrain","resume","didOnEnd","onclose","destroy","cleanup","_isStdio","./duplex.js","./passthrough.js","./transform.js","events","122","123","ReadableState","hwm","highWaterMark","pipes","pipesCount","flowing","endEmitted","reading","calledRead","sync","needReadable","emittedReadable","readableListening","objectMode","ranOut","awaitDrain","readingMore","readableAddChunk","addToFront","chunkInvalid","onEofChunk","emitReadable","maybeReadMore","needMoreData","roundUpToNextPowerOf2","MAX_HWM","howMuchToRead","endReadable","emitReadable_","maybeReadMore_","pipeOnDrain","emitDataEvents","pipeOnReadable","startPaused","paused","fromList","stringMode","cpy","nOrig","doRead","_read","pipeOpts","onunpipe","onfinish","needDrain","unpipe","errListeners","doEnd","stdout","stderr","endFn","dests","_fromList","./index.js","124","TransformState","afterTransform","needTransform","transforming","writecb","writechunk","ts","_transformState","rs","writeencoding","125","WriteReq","WritableState","ending","finished","noDecode","writing","bufferProcessing","onwrite","writelen","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","doWrite","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","finishMaybe","need","endWritable","isUint8Array","126","mock","superagent","_patchedBySuperagentMocker","methodsMapping","httpMethod","patch","reqProto","Request","oldEnd","originalMethods","_superagentMockerState","request","response","status","ex","oldSet","headers","oldSend","mergeObjects","oldQuery","objectOrString","parseQueryString","stringifyValues","routes","memo","defineRoute","Route","old","orig","oldObj","pathtoRegexp","clearRoutes","clearRoute","unmock","req","path-to-regexp","127","Agent","_defaults","_setDefaults","def","128","pushEncodedKeyValuePair","subkey","parseString","parseHeader","fields","isJSON","mime","Response","xhr","responseType","responseText","statusText","_setStatusProperties","header","getAllResponseHeaders","getResponseHeader","_setHeaderProperties","_responseType","_parseBody","_query","_header","rawResponse","new_err","_isResponseOK","custom_err","RequestBase","ResponseBase","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","serializeObject","html","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","application/json","_parser","toError","accept","user","btoa","_auth","attach","_getFormData","append","_formData","FormData","_shouldRetry","_retry","_callback","_maxRetries","retries","_retries","crossDomainError","crossDomain","ca","agent","_isHost","_endCalled","_finalizeQueryString","_end","_setTimeouts","onreadystatechange","readyState","_responseTimeoutTimer","timedout","_aborted","handleProgress","percent","loaded","onprogress","upload","username","password","open","_withCredentials","withCredentials","contentType","_serializer","setRequestHeader","./agent-base","./is-object","./request-base","./response-base","component-emitter","129","130","_timer","_timeout","_responseTimeout","option","deadline","retry","_retryCallback","ERROR_CODES","_fullfilledPromise","innerResolve","innerReject","use","_okCallback","getHeader","abort","base64Encoder","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","isObj","sortQuery","_sort","queryArr","_appendQueryString","_timeoutError","errno","131","utils","ct","links","link","parseLinks","statusType","info","redirect","clientError","serverError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","./utils","132","cleanHeader","changesOrigin","133","globalThis","restArguments","startIndex","tagTester","ie10IsDataView","isFunction$1","getInt8","has$1","isFinite$1","_isFinite","isNaN$1","_isNaN","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","nativeIsView","isDataView$1","isBufferLike","typedArrayPattern","emulatedSet","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","ObjProto","hasEnumBug","getLength","isArguments$1","attrs","_keys","_$1","_wrapped","toBufferView","bufferSource","getByteLength","aStack","bStack","deepEq","className","hasStringTagBug","tagDataView","SymbolProto","areArrays","isTypedArray$1","aCtor","bCtor","ie11fingerprint","methods","weakMapMethods","forEachName","extendOwn","toPath$1","deepGet","optimizeCb","argCount","mapObject","currentKey","accum","createEscaper","escaper","testRegexp","replaceRegexp","escapeChar","escapes","oldSettings","noMatch","bareIdentifier","render","_chain","executeBound","sourceFunc","boundFunc","callingContext","flatten$1","hasher","address","later","throttled","_now","immediate","passed","_args","compose","createPredicateIndexFinder","createIndexFinder","predicateFind","keyFinder","findWhere","createReduce","reducer","pluck","where","lastComputed","behavior","reStrSymbol","keyInObj","Boolean","isSorted","stop","chainResult","ArrayProto","supportsArrayBuffer","supportsDataView","nativeIsArray","isView","nodelist","document","childNodes","Int8Array","hasObjectTag","isIE11","isDataView","commonInit","mapTail","mapMethods","setMethods","escapeMap","`","_escape","unescapeMap","_unescape","boundArgs","callArgs","contextPath","indexBy","otherArrays","allExports","detect","foldl","inject","foldr","select","include","transpose","134","sets","_key","xl","subexp","setInterval","buildExps","isIRI","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","DIGIT$$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","error$1","mapDomain","regexSeparators","ucs2decode","counter","pctEncChar","pctDecChars","newStr","il","c2","_c","c3","_normalizeComponentEncoding","components","decodeUnreserved","decStr","userinfo","_stripLeadingZeros","_normalizeIPv4","_matches","slicedToArray","_normalizeIPv6","_matches2","_address$toLowerCase$","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","allZeroFields","lastLongest","longestZeroFields","newHost","newFirst","newLast","uriString","iri","IRI_PROTOCOL","URI_PROTOCOL","URI_PARSE","NO_MATCH_IS_UNDEFINED","schemeHandler","SCHEMES","unicodeSupport","domainHost","punycode","toASCII","_recomposeAuthority","uriTokens","$1","$2","removeDotSegments","RDS1","RDS2","RDS3","im","RDS5","toUnicode","authority","absolutePath","resolveComponents","skipNormalization","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","unescapeComponent","isSecure","wsComponents","secure","sliceIterator","_n","_e","_s","toConsumableArray","maxInt","regexPunycode","regexNonASCII","not-basic","invalid-input","stringFromCharCode","ucs2encode","basicToDigit","codePoint","digitToBasic","adapt","delta","numPoints","baseMinusTMin","inputLength","basic","oldi","baseMinusT","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","qMinusT","handler$1","handler$2","resourceName","_wsComponents$resourc","_wsComponents$resourc2","handler$3","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_xl","_xl2","toAddr","atIdx","localPart","URN_PARSE","handler$5","urnComponents","nid","nss","urnScheme","uriComponents","handler$6","uuidComponents","135","isUTF8","charset","encodeStr","qs","maxKeys","kstr","vstr","isASCII","encodeComponent","stringifyString","stringifyArray","stringifyObject","iconv-lite","136","_createClass","defineProperties","protoProps","staticProps","_q","_q2","_provisionBaseProvision","_provisionBaseProvision2","AIModels","_BaseProvision","ogapi","_ogapi","_organization","_identifier","parameter","organization","_checkRequiredParameters","_resource","modelFile","body_data","defered","Napi","_buildURL","_getExtraHeaders","_getUrlParameters","_getServiceBaseURL","_postElement","_composeElement","post_multipart","resultQuery","_statusCode","_location","../provision/BaseProvision","137","_GenericFinder2","_GenericFinder3","AIModelsFinder","_GenericFinder","_execute","filename","_filename","_download","_baseUrl","../GenericFinder","138","_httpStatusCodes","_httpStatusCodes2","GenericFinder","entity","error_not_found","serviceBaseURL","_api","_entity","_error_not_found","_id","_headers","_urlParameters","_serviceBaseURL","parameters","_composeUrl","provision","noBlob","_downloadUrl","http-status-codes","139","_operationsOperations","_operationsOperations2","_usersUserFinder","_usersUserFinder2","_geoclusterGeoclusterFinder","_geoclusterGeoclusterFinder2","_geoclusterGeocluster","_geoclusterGeocluster2","_securityCertificates","_securityCertificates2","_usersUsers","_usersUsers2","_organizationsOrganizationFinder","_organizationsOrganizationFinder2","_channelsChannelFinder","_channelsChannelFinder2","_searchingBuilderAreasSearchBuilder","_searchingBuilderAreasSearchBuilder2","_searchingBuilderDatasetsCatalogSearchBuilder","_searchingBuilderDatasetsCatalogSearchBuilder2","_areasAreaFinder","_areasAreaFinder2","_searchingBuilderBulkSearchBuilder","_searchingBuilderBulkSearchBuilder2","_searchingBuilderBulkExecutionSearchBuilder","_searchingBuilderBulkExecutionSearchBuilder2","_bulkBulkFinder","_bulkBulkFinder2","_bulkBulkExecutionFinder","_bulkBulkExecutionFinder2","_channelsChannels","_channelsChannels2","_areasAreas","_areasAreas2","_datasetsDatasets","_datasetsDatasets2","_timeseriesTimeseries","_timeseriesTimeseries2","_searchingBuilderChannelsSearchBuilder","_searchingBuilderChannelsSearchBuilder2","_rulesConfigurationRuleConfigurations","_rulesConfigurationRuleConfigurations2","_rulesConfigurationRuleConfigurationsFinder","_rulesConfigurationRuleConfigurationsFinder2","_rulesConfigurationRuleConfigurationsCatalog","_rulesConfigurationRuleConfigurationsCatalog2","_rulesConfigurationRuleConfigurationsHelper","_rulesConfigurationRuleConfigurationsHelper2","_datasetsDatasetFinder","_datasetsDatasetFinder2","_timeseriesTimeseriesFinder","_timeseriesTimeseriesFinder2","_operationTypesOperationType","_operationTypesOperationType2","_operationTypesOperationTypeFinder","_operationTypesOperationTypeFinder2","_operationTypesOperationTypeCatalog","_operationTypesOperationTypeCatalog2","_securityCertificateFinder","_securityCertificateFinder2","_operationsOperationFinder","_operationsOperationFinder2","_searchingFilterBuilder","_searchingFilterBuilder2","_searchingSelectBuilder","_searchingSelectBuilder2","_operationsOperationActions","_operationsOperationActions2","_operationsPeriodicityActions","_operationsPeriodicityActions2","_utilExpression","_utilExpression2","_utilSelectElement","_utilSelectElement2","_searchingBuilderRawSearchBuilder","_searchingBuilderRawSearchBuilder2","_searchingBuilderDevicesSearchBuilder","_searchingBuilderDevicesSearchBuilder2","_searchingBuilderSubscribersSearchBuilder","_searchingBuilderSubscribersSearchBuilder2","_searchingBuilderSubscriptionsSearchBuilder","_searchingBuilderSubscriptionsSearchBuilder2","_searchingBuilderAssetsSearchBuilder","_searchingBuilderAssetsSearchBuilder2","_searchingBuilderTicketsSearchBuilder","_searchingBuilderTicketsSearchBuilder2","_searchingBuilderTasksSearchBuilder","_searchingBuilderTasksSearchBuilder2","_searchingBuilderOperationsSearchBuilder","_searchingBuilderOperationsSearchBuilder2","_searchingBuilderExecutionsSearchBuilder","_searchingBuilderExecutionsSearchBuilder2","_searchingBuilderExecutionsHistorySearchBuilder","_searchingBuilderExecutionsHistorySearchBuilder2","_searchingBuilderAlarmsSearchBuilder","_searchingBuilderAlarmsSearchBuilder2","_searchingBuilderDatamodelsSearchBuilder","_searchingBuilderDatamodelsSearchBuilder2","_searchingBuilderFeedsSearchBuilder","_searchingBuilderFeedsSearchBuilder2","_searchingBuilderDatastreamsSearchBuilder","_searchingBuilderDatastreamsSearchBuilder2","_searchingBuilderDatapointsSearchBuilder","_searchingBuilderDatapointsSearchBuilder2","_searchingBuilderBundlesSearchBuilder","_searchingBuilderBundlesSearchBuilder2","_searchingBuilderCertificatesSearchBuilder","_searchingBuilderCertificatesSearchBuilder2","_searchingBuilderHardwaresSearchBuilder","_searchingBuilderHardwaresSearchBuilder2","_searchingBuilderSoftwaresSearchBuilder","_searchingBuilderSoftwaresSearchBuilder2","_searchingBuilderOperationalStatusSearchBuilder","_searchingBuilderOperationalStatusSearchBuilder2","_searchingBuilderServiceGroupSearchBuilder","_searchingBuilderServiceGroupSearchBuilder2","_searchingBuilderAdministrativeStateSearchBuilder","_searchingBuilderAdministrativeStateSearchBuilder2","_searchingBuilderCommunicationsModuleTypeSearchBuilder","_searchingBuilderCommunicationsModuleTypeSearchBuilder2","_searchingBuilderFieldsDefinitionSearchBuilder","_searchingBuilderFieldsDefinitionSearchBuilder2","_searchingBuilderBasicTypesSearchBuilder","_searchingBuilderBasicTypesSearchBuilder2","_searchingBuilderMobilePhoneProviderSearchBuilder","_searchingBuilderMobilePhoneProviderSearchBuilder2","_searchingBuilderIoTDatastreamPeriodSearchBuilder","_searchingBuilderIoTDatastreamPeriodSearchBuilder2","_searchingBuilderResourceTypeSearchBuilder","_searchingBuilderResourceTypeSearchBuilder2","_searchingBuilderAllowedResourceTypeSearchBuilder","_searchingBuilderAllowedResourceTypeSearchBuilder2","_searchingBuilderIoTDatastreamAccessSearchBuilder","_searchingBuilderIoTDatastreamAccessSearchBuilder2","_searchingBuilderIoTDatastreamStoragePeriodSearchBuilder","_searchingBuilderIoTDatastreamStoragePeriodSearchBuilder2","_searchingBuilderTicketSeveritySearchBuilder","_searchingBuilderTicketSeveritySearchBuilder2","_searchingBuilderTicketPrioritySearchBuilder","_searchingBuilderTicketPrioritySearchBuilder2","_searchingBuilderTicketStatusSearchBuilder","_searchingBuilderTicketStatusSearchBuilder2","_searchingBuilderRulesSearchBuilder","_searchingBuilderRulesSearchBuilder2","_searchingBuilderOperationTypesSearchBuilder","_searchingBuilderOperationTypesSearchBuilder2","_searchingBuilderUsersSearchBuilder","_searchingBuilderUsersSearchBuilder2","_searchingBuilderDomainsSearchBuilder","_searchingBuilderDomainsSearchBuilder2","_searchingBuilderPlansSearchBuilder","_searchingBuilderPlansSearchBuilder2","_searchingBuilderDevicesPlansSearchBuilder","_searchingBuilderDevicesPlansSearchBuilder2","_bundlesBundles","_bundlesBundles2","_bundlesBundleFinder","_bundlesBundleFinder2","_organizationsOrganizations","_organizationsOrganizations2","_domainsDomains","_domainsDomains2","_domainsDomainsFinder","_domainsDomainsFinder2","_entitiesDeviceFinder","_entitiesDeviceFinder2","_entitiesTicketFinder","_entitiesTicketFinder2","_entitiesSubscriptionsFinder","_entitiesSubscriptionsFinder2","_entitiesSubscribersFinder","_entitiesSubscribersFinder2","_collectionDevicesDeviceMessage","_collectionDevicesDeviceMessage2","_collectionDevicesCollectDatastreams","_collectionDevicesCollectDatastreams2","_collectionDevicesCollectDatapoint","_collectionDevicesCollectDatapoint2","_collectionDevicesCollectHardware","_collectionDevicesCollectHardware2","_collectionDevicesCollectSoftware","_collectionDevicesCollectSoftware2","_collectionDevicesCollectStorage","_collectionDevicesCollectStorage2","_collectionDevicesCollectUsage","_collectionDevicesCollectUsage2","_collectionDevicesCollectPowerSupply","_collectionDevicesCollectPowerSupply2","_collectionDevicesCollectCommsModuleMessage","_collectionDevicesCollectCommsModuleMessage2","_collectionDevicesCollectMobile","_collectionDevicesCollectMobile2","_collectionDevicesCollectSubscriber","_collectionDevicesCollectSubscriber2","_collectionDevicesCollectSubscription","_collectionDevicesCollectSubscription2","_workgroupsWorkgroupRelations","_workgroupsWorkgroupRelations2","_workgroupsWorkgroups","_workgroupsWorkgroups2","_workgroupsWorkgroupFinder","_workgroupsWorkgroupFinder2","_searchingBuilderWorkgroupsSearchBuilder","_searchingBuilderWorkgroupsSearchBuilder2","_workgroupsWorkgroupRelationsFinder","_workgroupsWorkgroupRelationsFinder2","_searchingBuilderUserProfilesSearchBuilder","_searchingBuilderUserProfilesSearchBuilder2","_iotDatamodelsDatamodels","_iotDatamodelsDatamodels2","_iotDatamodelsDatamodelsHelper","_iotDatamodelsDatamodelsHelper2","_iotDatamodelsDatamodelsFinder","_iotDatamodelsDatamodelsFinder2","_iotCatalogDatastream","_iotCatalogDatastream2","_iotCatalogQrating","_iotCatalogQrating2","_provisionEntitiesEntityBuilder","_provisionEntitiesEntityBuilder2","_provisionBulkBulkExecutionBuilder","_provisionBulkBulkExecutionBuilder2","_searchingBuilderEntitiesSearchBuilder","_searchingBuilderEntitiesSearchBuilder2","_searchingBuilderDatasetEntitiesSearchBuilder","_searchingBuilderDatasetEntitiesSearchBuilder2","_searchingBuilderDatasetSearchBuilder","_searchingBuilderDatasetSearchBuilder2","_searchingBuilderTimeserieSearchBuilder","_searchingBuilderTimeserieSearchBuilder2","_searchingBuilderCountryCodesSearchBuilder","_searchingBuilderCountryCodesSearchBuilder2","_searchingBuilderTimezoneSearchBuilder","_searchingBuilderTimezoneSearchBuilder2","_searchingBuilderUserLanguagesSearchBuilder","_searchingBuilderUserLanguagesSearchBuilder2","_provisionProcessorsProvisionProcessors","_provisionProcessorsProvisionProcessors2","_provisionProcessorsProvisionProcessorsFinder","_provisionProcessorsProvisionProcessorsFinder2","_entitiesEntityFinder","_entitiesEntityFinder2","_alarmsAlarmActions","_alarmsAlarmActions2","_superagent2","_superagent3","_connectorsFunctionsConfigurationConnectorFunctionsHelper","_connectorsFunctionsConfigurationConnectorFunctionsHelper2","_connectorsFunctionsConfigurationConnectorFunctionsFinder","_connectorsFunctionsConfigurationConnectorFunctionsFinder2","_connectorsFunctionsConfigurationConnectorFunctions","_connectorsFunctionsConfigurationConnectorFunctions2","_pipelinesPipelineFinder","_pipelinesPipelineFinder2","_transformersTransformerFinder","_transformersTransformerFinder2","_AIModelsAIModelsFinder","_AIModelsAIModelsFinder2","_transformersTransformers","_transformersTransformers2","_AIModelsAIModels","_AIModelsAIModels2","_pipelinesPipelines","_pipelinesPipelines2","_manufacturersManufacturer","_manufacturersManufacturer2","_manufacturersModel","_manufacturersModel2","_manufacturersManufacturerFinder","_manufacturersManufacturerFinder2","_manufacturersModelFinder","_manufacturersModelFinder2","RequestEndMonkeyPatching","beforeStart","InternalOpenGateAPI","northAmpliaREST","southAmpliaREST","Sapi","EX","SE","operations","alarms","entityBuilder","operationTypeObj","ruleConfigObj","dataset","timeserie","operationId","taskId","datamodel","processorId","connectorFunctionData","./AIModels/AIModels","./AIModels/AIModelsFinder","./alarms/AlarmActions","./areas/AreaFinder","./areas/Areas","./bulk/BulkExecutionFinder","./bulk/BulkFinder","./bundles/BundleFinder","./bundles/Bundles","./channels/ChannelFinder","./channels/Channels","./collection/devices/DeviceMessage","./collection/devices/collect/CommsModuleMessage","./collection/devices/collect/Datapoint","./collection/devices/collect/Datastreams","./collection/devices/collect/Hardware","./collection/devices/collect/Mobile","./collection/devices/collect/PowerSupply","./collection/devices/collect/Software","./collection/devices/collect/Storage","./collection/devices/collect/Subscriber","./collection/devices/collect/Subscription","./collection/devices/collect/Usage","./connectorsFunctionsConfiguration/ConnectorFunctions","./connectorsFunctionsConfiguration/ConnectorFunctionsFinder","./connectorsFunctionsConfiguration/ConnectorFunctionsHelper","./datasets/DatasetFinder","./datasets/Datasets","./domains/Domains","./domains/DomainsFinder","./entities/DeviceFinder","./entities/EntityFinder","./entities/SubscribersFinder","./entities/SubscriptionsFinder","./entities/TicketFinder","./geocluster/Geocluster","./geocluster/GeoclusterFinder","./iot/catalog/Datastream","./iot/catalog/Qrating","./iot/datamodels/Datamodels","./iot/datamodels/DatamodelsFinder","./iot/datamodels/DatamodelsHelper","./manufacturers/Manufacturer","./manufacturers/ManufacturerFinder","./manufacturers/Model","./manufacturers/ModelFinder","./operationTypes/OperationType","./operationTypes/OperationTypeCatalog","./operationTypes/OperationTypeFinder","./operations/OperationActions","./operations/OperationFinder","./operations/Operations","./operations/PeriodicityActions","./organizations/OrganizationFinder","./organizations/Organizations","./pipelines/PipelineFinder","./pipelines/Pipelines","./provision/bulk/BulkExecutionBuilder","./provision/entities/EntityBuilder","./provisionProcessors/provisionProcessors","./provisionProcessors/provisionProcessorsFinder","./rulesConfiguration/RuleConfigurations","./rulesConfiguration/RuleConfigurationsCatalog","./rulesConfiguration/RuleConfigurationsFinder","./rulesConfiguration/RuleConfigurationsHelper","./searching/FilterBuilder","./searching/SelectBuilder","./searching/builder/AdministrativeStateSearchBuilder","./searching/builder/AlarmsSearchBuilder","./searching/builder/AllowedResourceTypeSearchBuilder","./searching/builder/AreasSearchBuilder","./searching/builder/AssetsSearchBuilder","./searching/builder/BasicTypesSearchBuilder","./searching/builder/BulkExecutionSearchBuilder","./searching/builder/BulkSearchBuilder","./searching/builder/BundlesSearchBuilder","./searching/builder/CertificatesSearchBuilder","./searching/builder/ChannelsSearchBuilder","./searching/builder/CommunicationsModuleTypeSearchBuilder","./searching/builder/CountryCodesSearchBuilder","./searching/builder/DatamodelsSearchBuilder","./searching/builder/DatapointsSearchBuilder","./searching/builder/DatasetEntitiesSearchBuilder","./searching/builder/DatasetSearchBuilder","./searching/builder/DatasetsCatalogSearchBuilder","./searching/builder/DatastreamsSearchBuilder","./searching/builder/DevicesPlansSearchBuilder","./searching/builder/DevicesSearchBuilder","./searching/builder/DomainsSearchBuilder","./searching/builder/EntitiesSearchBuilder","./searching/builder/ExecutionsHistorySearchBuilder","./searching/builder/ExecutionsSearchBuilder","./searching/builder/FeedsSearchBuilder","./searching/builder/FieldsDefinitionSearchBuilder","./searching/builder/HardwaresSearchBuilder","./searching/builder/IoTDatastreamAccessSearchBuilder","./searching/builder/IoTDatastreamPeriodSearchBuilder","./searching/builder/IoTDatastreamStoragePeriodSearchBuilder","./searching/builder/MobilePhoneProviderSearchBuilder","./searching/builder/OperationTypesSearchBuilder","./searching/builder/OperationalStatusSearchBuilder","./searching/builder/OperationsSearchBuilder","./searching/builder/PlansSearchBuilder","./searching/builder/RawSearchBuilder","./searching/builder/ResourceTypeSearchBuilder","./searching/builder/RulesSearchBuilder","./searching/builder/ServiceGroupSearchBuilder","./searching/builder/SoftwaresSearchBuilder","./searching/builder/SubscribersSearchBuilder","./searching/builder/SubscriptionsSearchBuilder","./searching/builder/TasksSearchBuilder","./searching/builder/TicketPrioritySearchBuilder","./searching/builder/TicketSeveritySearchBuilder","./searching/builder/TicketStatusSearchBuilder","./searching/builder/TicketsSearchBuilder","./searching/builder/TimeserieSearchBuilder","./searching/builder/TimezoneSearchBuilder","./searching/builder/UserLanguagesSearchBuilder","./searching/builder/UserProfilesSearchBuilder","./searching/builder/UsersSearchBuilder","./searching/builder/WorkgroupsSearchBuilder","./security/CertificateFinder","./security/Certificates","./timeseries/Timeseries","./timeseries/TimeseriesFinder","./transformers/TransformerFinder","./transformers/Transformers","./users/UserFinder","./users/Users","./util/Expression","./util/SelectElement","./workgroups/WorkgroupFinder","./workgroups/WorkgroupRelations","./workgroups/WorkgroupRelationsFinder","./workgroups/Workgroups","140","ProvisionGenericFinder","./GenericFinder","141","_actionsAlarmAttendBuilder","_actionsAlarmAttendBuilder2","_actionsAlarmCloseBuilder","_actionsAlarmCloseBuilder2","AlarmActions","./actions/AlarmAttendBuilder","./actions/AlarmCloseBuilder","142","Operation","resource","postObj","_postObj","_this","143","_Alarm","_Alarm2","AlarmActionBuilder","_action","_build","notes","alarmId","./Alarm","144","_AlarmActionBuilder2","_AlarmActionBuilder3","AlarmAttendBuilder","_AlarmActionBuilder","./AlarmActionBuilder","145","AlarmCloseBuilder","146","_ProvisionGenericFinder2","_ProvisionGenericFinder3","AreaFinder","_ProvisionGenericFinder","_checkString","../ProvisionGenericFinder","147","_TYPE_ENUM","_utilFormatsCheck_types","_utilFormatsCheck_types2","Areas","_checkStringAndLength","_name","color","_color","_description","_checkNumber","_order","coordinates","_checkType","TYPE_ENUM","_checkArray","_type","_coordinates","entities","_entities","geometry","area","../util/formats/check_types","./TYPE_ENUM","148","149","MIME_TYPES_ENUM","BulkExecutionFinder","_details","mimetype","not_found","mime_type","_setExtraHeaders","150","BulkFinder","_raw","_setUrlParameters","151","ACTION_ENUM","152","BundleFinder","153","_ACTION_ENUM","_deploymentDeploymentElement","_deploymentDeploymentElement2","Bundles","hardware","_hardware","workgroup","_workgroup","preaction","_preaction","_checkActions","postactions","_postaction","userNotes","_userNotes","active","_active","bundle","postaction","progressEvent","_deploymentElements","newDE","_parent","totalTB","de","_validators","_allPromisesOk","onCreateBundle","bundleLocation","dePromises","deTmp","deploy","activate","onCreateBundleError","_this2","newBundleFinder","findByNameAndVersion","bundleUpdate","./ACTION_ENUM","./deployment/DeploymentElement","154","_OPERATION_ENUM","_OPTION_ENUM","_TYPE_VALIDATORS_ENUM","_MODE_VALIDATORS_ENUM","DeploymentElement","_progressEvent","_operation","_option","_fileName","_oldName","_oldVersion","_oldPath","allowed","OPERATION_ENUM","OPTION_ENUM","validators","validator","validatorsArray","trustedBootExists","_checkValidator","validatorElement","MODE_VALIDATORS_ENUM","TYPE_VALIDATORS_ENUM","downloadUrl","rawFile","_rawFile","fileValidationRequired","deploymentElement","oldName","oldVersion","oldPath","blob","Blob","petitionOpts","_composeUrlCreate","createWithFile","../../provision/BaseProvision","./MODE_VALIDATORS_ENUM","./OPERATION_ENUM","./OPTION_ENUM","./TYPE_VALIDATORS_ENUM","155","156","157","158","159","160","ChannelFinder","_domain","_executeWorkgroupRelation","globalData","finalData","channels","workgroupsRelationsUrl","workgroupRelation","161","Channels","certificate","_certificates","certificates","162","_collectEvent","_collectEvent2","_devicesCollectDatastreams","_devicesCollectDatastreams2","DeviceMessage","_Event","_iotMessage","_dmmMessage","_dataStreamVersion","_deviceId","_datastreams","deviceId","datastream","composeElement","device","datastreams","boxPromises","_buildIotURL","_composeIotMessage","_buildDmmURL","_composeDmmMessage","errores","../devices/collect/Datastreams","./collect/Event","163","_enumANTENNA_STATUS_ENUM","_Hardware","_Hardware2","_Software","_Software2","_Mobile","_Mobile2","_Subscriber","_Subscriber2","_Subscription","_Subscription2","CommsModuleMessage","_operationalStatus","_antennaStatus","_softwareList","_mobile","_subscriber","_subscription","operationalStatus","operationalStatusSearchBuilder","withEntityType","withId","execute","antennaStatus","_checkValues","ANTENNA_STATUS_ENUM","software","mobile","subscriber","subscription","enumName","commsModule","softwareList","./Hardware","./Mobile","./Software","./Subscriber","./Subscription","./enum/ANTENNA_STATUS_ENUM","164","Datapoint","_from","_at","_value","_tags","tags","165","_Datapoint","_Datapoint2","Datastream","_feed","_datapoints","feed","datapoint","datapoints","./Datapoint","166","_Usage","_Usage2","_Storage","_Storage2","_PowerSupply","_PowerSupply2","_CommsModuleMessage","_CommsModuleMessage2","_enumTEMPERATURE_STATUS_ENUM","_enumLEVEL_TREND_ENUM","Event","_event_id","_temperature","_cpuUsage","_ram","_volatilStorage","_nonVolatilStorage","_powerSupply","_upTime","_communicationsModulesList","latitude","longitude","currentTemperature","unitTemperature","TEMPERATURE_STATUS_ENUM","trend","LEVEL_TREND_ENUM","averageTemperature","average","minimumTemperature","maximumTemperature","cpuUsage","ram","volatilStorage","nonVolatilStorage","powerSupply","communicationsModules","upTime","temperature","./CommsModuleMessage","./PowerSupply","./Storage","./Usage","./enum/LEVEL_TREND_ENUM","./enum/TEMPERATURE_STATUS_ENUM","167","Hardware","_serialnumber","_manufacturerName","_manufacturerOui","_modelName","_modelVersion","_clockDate","serialnumber","manufacturerName","manufacturerOui","modelName","modelVersion","clockDate","_isValidDate","thisYear","manufacturer","oui","168","Mobile","_mr","_apn","_bcch","_cgi","_cellId","_lac","_ratType","_plmn","_timingAdvance","_signalStrength","_signalStrengthMax","_signalStrengthMin","_signalQuality","_signalQualityMax","_signalQualityMin","mr","apn","bcch","cgi","cellId","lac","ratType","plmn","timingAdvance","signalStrength","signalStrengthMax","signalStrengthMin","signalQuality","signalQualityMax","signalQualityMin","169","_enumPOWER_SUPPLY_SOURCE_ENUM","_enumBATTERY_CHARGE_STATUS_ENUM","_enumBATTERY_CHARGE_LEVEL_STATUS_ENUM","PowerSupply","_source","_status","_trend","_batteryStatus","_percentage","_outageDate","_outageDuration","POWER_SUPPLY_SOURCE_ENUM","BATTERY_CHARGE_STATUS_ENUM","BATTERY_CHARGE_LEVEL_STATUS_ENUM","percentage","outageDate","batteryChargeLevel","outage","./enum/BATTERY_CHARGE_LEVEL_STATUS_ENUM","./enum/BATTERY_CHARGE_STATUS_ENUM","./enum/POWER_SUPPLY_SOURCE_ENUM","170","_enumSOFTWARE_TYPE_ENUM","Software","_date","SOFTWARE_TYPE_ENUM","./enum/SOFTWARE_TYPE_ENUM","171","_Usage3","Storage","_unit","_total","usage","172","Subscriber","173","_enumADDRESS_TYPE_ENUM","Subscription","_operator","_imsi","_msisdn","_addressType","_addressValue","_addressApn","imsi","msisdn","addressType","ADDRESS_TYPE_ENUM","addressValue","addressApn","./enum/ADDRESS_TYPE_ENUM","174","Usage","_usageUnit","_current","_average","_maximum","_minimum","175","176","177","178","179","180","181","182","183","_enum_CONNECTOR_FUNCTIONS_ENUMS","ConnectorFunctions","connectorFunctionsObj","withOrganization","withChannel","withIdentifier","withName","operationName","withOperationName","withOperationalStatus","withType","payloadType","withPayloadType","withDescription","northCriterias","withNorthCriterias","southCriterias","withSouthCriterias","javascript","withJavascript","_channel","_operationName","_javascript","criterias","_northCriterias","crit","addSouthCriteria","critErr","_southCriterias","CONNECTOR_FUNCTION_TYPES","CONNECTOR_FUNCTION_PAYLOAD_TYPES","_payloadType","CONNECTOR_FUNCTION_OPERATIONAL_STATUS","isUpdate","_doNorthPost","_doNorthPut","./enum/_CONNECTOR_FUNCTIONS_ENUMS","184","ConnectorFunctionsFinder","185","ConnectorFunctionsHelper","_jsHeaders","_mdHeaders","CONNECTOR_FUNCTION_SOUTH_PROTOCOLS","186","187","DatasetFinder","_withId","datasetId","188","Datasets","identifierColumn","_identifierColumn","columns","_columns","189","Domains","parentDomain","_parentDomain","190","DomainFinder","hierarchy","_hierarchy","191","_EntityFinder2","_EntityFinder3","DeviceFinder","_EntityFinder","./EntityFinder","192","EntityFinder","entitySource","_entitySource","_flattened","flattened","193","SubscribersFinder","194","SubscriptionsFinder","195","TicketFinder","196","Geocluster","_composeElementUpdate","197","GeoclusterFinder","_ref","zoom","topRight","bottomLeft","198","_Datastream","Category","_isValidString","_errors","addDatastream","param_name","max_length","./Datastream","199","_ajv","_ajv2","_period","qrating","_qrating","_storage","access","_access","hardwaresIds","_hardwares","errValidation","storage","hardwareIds","200","Qrating","_isValidNumber","_minRequired","_minDesired","_ideal","_maxDesired","_maxAllowed","maxScore","_maxScore","cumulativePeriodDivisor","_cumulativePeriodDivisor","conversionMatrix","_conversionMatrix","min_required","min_desired","ideal","max_desired","max_allowed","max_score","cumulative_period_divisor","conversion_matrix","201","_catalogCategory","_catalogCategory2","_catalogDatastream","PRE_RESOURCE","DATAMODELS_RESOURCE","Datamodels","_categories","_resourceType","resourceType","category","_category","addDatastreams","exists_category","allowedResourceTypes","categories","../catalog/Category","../catalog/Datastream","202","DATAMODEL_RESOURCE","DatamodelsFinder","../../ProvisionGenericFinder","203","POST_RESOURCE","DatamodelsHelper","_datamodel","remove_index","id_datastream","remove_category_index","remove_datastream_index","category_index","datastream_index","old_category","new_category","old_category_index","new_category_index","update_category_index","update_datastream_index","_datastream","204","_ManufacturerMedia","_ManufacturerMedia2","_Model","_Model2","Manufacturers","_notes","_manufUrl","fax","_fax","telephone","_telephone","_address","_email","updateElement","./ManufacturerMedia","./Model","205","ManufacturerFinder","_mediaIdentifier","manufacturerId","mediaIdentifier","206","ManufacturerMedia","media","Exception","hardwareMedia","207","_Manufacturer","_Manufacturer2","_ModelMedia","_ModelMedia2","Models","_manufacturer","_modelUrl","./Manufacturer","./ModelMedia","208","ModelFinder","modelId","209","ModelMedia","210","OperationType","nameForUpdate","withTitle","fromCatalog","steps","withSteps","withParameters","models","withModels","applicableTo","_title","_parameters","_fromCatalog","_steps","_models","_applicableTo","211","OperationTypesCatalog","212","OperationTypeFinder","213","_moment","_moment2","OperationActions","_operationId","_update","_cancel","_periodicityActions","schedule","_readAndUpdate","delayed","_formatError","newOperationFinder","findById","periodicityId","forceToActivate","_this3","214","_x4","_x5","OperationFinder","_limit","215","_catalogBaseOperationBuilder","_catalogBaseOperationBuilder2","_catalogPeriodPeriodicityUpdateBuilder","_catalogPeriodPeriodicityUpdateBuilder2","_merge","_merge2","Operations","_operations","_operationNames","findPeriodicityById","_createPeriodicBuilder","opN","_findOperation","_loadOperationCatalog","_createBuilder","operationTypesSearchBuilder","./catalog/BaseOperationBuilder","./catalog/period/PeriodicityUpdateBuilder","216","PeriodicityActions","_taskId","findPeriodicityByPeriodicityId","217","AppendEntitiesBy","_filter","entityType","_entityTypeWhenFilter","_filterTemplate","entitiesWithParameters","_tag","218","_Operation","_Operation2","_parametersParameterBuilderFactory","_AppendEntitiesBy","_AppendEntitiesBy2","_periodExecuteEachBuilder","_periodExecuteEachBuilder2","_periodExecuteEveryBuilder","_periodExecuteEveryBuilder2","_utilDATE_FORMAT","VALIDATE","editable","BaseOperationBuilder","appendEntitiesBy","_resourcesAvailables","job","operationParameters","ackTimeout","retriesDelay","retryResultList","scattering","maxSpread","factor","warningMaxRate","strategy","_getName","_getEnd","apiKey","_addSpecificParameter","operationRetries","retriesNumber","_checkMandatoryParameters","executeImmediately","jobTimeout","repeating","maxJobTimeout","withJobTimeout","_convertToTask","_convertToJob","jobObj","taskObj","DATE_FORMAT","stopDate","paramName","configParam","attr","attributes","./../../util/DATE_FORMAT","./AppendEntitiesBy","./Operation","./parameters/ParameterBuilderFactory","./period/ExecuteEachBuilder","./period/ExecuteEveryBuilder","219","220","_defineProperty","BaseParameterBuilderWithParent","_appendParameterValue","_isTypeValueAllow","_isAllowValue","_getType","subtype","_isArray","_isString","_isDate","_isTime","_isObject","_isNumber","_isBoolean","isAllowed","paramObject","221","_BaseParameterBuilderWithParent","ParameterBuilderFactory","./BaseParameterBuilderWithParent","222","DAYS_ENUM","223","ExecuteEachBuilder","periodicityName","_skeleton","_stop","executions","startDate","_minutes","_addPeriod","_hours","skeleton","224","_MONTHS_ENUM","_patternByWeek","_patternByWeek2","_patternByYear","_patternByYear2","_patternByMonth","_patternByMonth2","_patternByGeneric","_patternByGeneric2","ExecuteEveryBuilder","_day","_periodicityName","_task","monthly","MONTHS_ENUM","./MONTHS_ENUM","./pattern/ByGeneric","./pattern/ByMonth","./pattern/ByWeek","./pattern/ByYear","225","226","_ExecuteEveryBuilder","_ExecuteEveryBuilder2","_ExecuteEachBuilder","_ExecuteEachBuilder2","PeriodicityUpdateBuilder","task_id","_getStart","_byGeneric","_updateTask","../Operation","./../../../util/DATE_FORMAT","./ExecuteEachBuilder","./ExecuteEveryBuilder","227","ByGeneric","TIME_FORMAT","_create","./../../../../util/DATE_FORMAT","228","_ByGeneric2","_ByGeneric3","ByMonth","_ByGeneric","./ByGeneric","229","_DAYS_ENUM","ByWeek","weekly","./../DAYS_ENUM","230","ByYear","yearly","_month","./../MONTHS_ENUM","231","OrganizationFinder","organizations","232","Organizations","_countryCode","_langCode","_timeZone","_zoom","countryCode","langCode","plan","_plan","onlyDomainCerts","_onlyDomainCerts","_mapDefault","updateData","timezone","onlyAssignedDomainCertificates","mapDefault","233","PipelineFinder","234","Pipelines","_actions","actionTmp","addAction","pipeline","235","BaseProvision","requiredParameters","_requiredParameters","parametersNotFound","_onCreated","_composeUpdateElement","236","_BaseProvision2","_BaseProvision3","xls","xlsx","BulkExecutionBuilder","_processorId","extension","numberOfEntriesToProcess","_extension","_executeOperation","processorBulkFile","petitionUrl","../BaseProvision","237","_SimpleBuilder2","_SimpleBuilder3","AssetID","AssetBuilder","_SimpleBuilder","allowedDatastreams","definedSchemas","jsonSchemaValidator","./SimpleBuilder","238","BulkBuilder","csv_response","bulkFile","239","ComplexBuilder","_flattenedEntityData","_content","_relation","_index","withComplex","_jsonEntityData","complex","cm","_initFromJson","idCommunicationModules","getAllowedDatastreams","ds","_found","_idx","_rel","240","_BulkBuilder2","_BulkBuilder3","CsvBulkBuilder","_BulkBuilder","./BulkBuilder","241","_ComplexBuilder2","_ComplexBuilder3","_SubscriberBuilder","_SubscriptionBuilder","_jsonpath","_jsonpath2","BoxBuilder","urlParameters","subscribers","subscriptions","_obj","_url","_objClone","_deviceKeys","dsName","_subscriberKeys","_subscriptionKeys","_administrationKeys","_wrappers","commsId","WrapperBuilder","SubscriptionID","SubscriberID","putObj","childEntityPromises","deviceKey","previousValue","_urlWithKey","deletePromises","_this4","_created","_checkExists","exists","DeviceBuilder","_ComplexBuilder","_getEntityKey","./ComplexBuilder","./SubscriberBuilder","./SubscriptionBuilder","jsonpath","242","_AssetBuilder","_AssetBuilder2","_DeviceBuilder","_DeviceBuilder2","_TicketBuilder","_TicketBuilder2","_SubscriberBuilder2","_SubscriptionBuilder2","_CsvBulkBuilder","_CsvBulkBuilder2","_JsonFlattenedBulkBuilder","_JsonFlattenedBulkBuilder2","_JsonBulkBuilder","_JsonBulkBuilder2","BULK_RESOURCES","EntityBuilder","filterElement","newFilterBuilder","and","like","datamodels.categories.datastreams.identifier","datamodels.organizationName","datamodels.allowedResourceTypes","datamodelsSearchBuilder","okh","_getJsonPathElements","_setDevicesProperties","basicTypesSearchBuilder","withPath","complexFunctions","simpleFunctions","includeSubscriberOrSubscription","function","_genericBuilder","_validateBulk","onFindAllowedDatastreams","_loadAllowedDatastreams","./AssetBuilder","./CsvBulkBuilder","./DeviceBuilder","./JsonBulkBuilder","./JsonFlattenedBulkBuilder","./TicketBuilder","243","JsonBulkBuilder","244","JsonFlattenedBulkBuilder","245","_lodash","_lodash2","SimpleBuilder","_allowedDatastreams","_definedSchemas","_jsonSchemaValidator","getEntityKey","ERROR_DATASTREAM_NOT_ALLOWED","jSchema","246","SubscriberBuilder","247","SubscriptionBuilder","248","TicketID","TicketBuilder","249","ProvisionProcessors","configurationParams","_checkObject","_configurationParams","scriptProcessor","_scriptProcessor","250","provisionProcessorsFinder","251","_RuleCondition2","_RuleNotification2","RuleConfigurations","ruleConfigurationObj","withMode","withActive","withCondition","actionsDelay","withActionsDelay","withActions","_mode","_actionsDelay","conditionFilter","_condition","severity","_severity","newParameters","./_RuleCondition","./_RuleNotification","252","RuleConfigurationsCatalog","253","RuleConfigurationsFinder","254","RuleConfigurationsHelper","255","_RuleConfigurations","_RuleConfigurations2","_RuleCondition","conditionData","_ruleConfiguration","parameterName","parameterValue","paramTmp","./RuleConfigurations","256","_RuleNotification","notificationData","_notification","enabled","bearerName","bearerRecipients","bearers","bearerTmp","recipients","257","_Search2","_Search3","AssetSearch","_Search","urlParams","assets","./Search","258","BaseSearch","Accept","loadAll","parsedResult","ignoreError","paging","_asyncPagingFilter","_loadData","259","DeviceSearch","devices","ele","dato","260","EntitySearch","261","FilterBuilder","or","_len2","_key2","./../util/Expression","262","_BaseSearch2","_BaseSearch3","Search","_BaseSearch","./BaseSearch","263","SelectBuilder","_selectTemplate","input_element","exists_element","input_fields","input_field","fieldExists","z","./../util/SelectElement","264","StaticSearch","customFilters","_contentType","_customFilters","finalContent","count_filters","contentTmp","finalValue","createAndAddFileObj","finalObj","entityTypeTmp","typeTmp","dataTmp","filterTmp","profileTmp","managed","resourceTypeIdx","statuscode","resultContent","ticketSeverity","ticketPriority","ticketStatus","serviceGroups","ASSET","SUBSCRIBER","SUBSCRIPTION","GATEWAY","administrativeState","COMMUNICATIONS_MODULE","CERTIFICATE","communicationsModuleType","ADSL","mandatory","CAN","ETH","GENERIC","GSM","HAN","I2C","LOWPAN","LTE_M","MESH","MOBILE","MULTIMOBILE","NARROWBAND","PLC","RS232","RS422","RS485","SIGFOX","ZIGBEE","ruleMode","ruleType","ruleConfigurationSeverity","userProfile","admin_domain","admin","advanced","viewer","ioTDatastreamAccess","ioTDatastreamStoragePeriod","ioTDatastreamPeriod","allowedResourceType","fieldsDefinition","enumeration","topology","userLanguages","language","countryCodes","country","timezones","265","WPSearch","266","_SearchBuilder2","_SearchBuilder3","_StaticSearch","_StaticSearch2","AdministrativeStateSearchBuilder","_SearchBuilder","_buildUrl","_buildFilter","_builderParams","administrativeStateId","../StaticSearch","./SearchBuilder","267","_SearchWithSummaryBuilder2","_SearchWithSummaryBuilder3","_utilSearchingFieldsFieldFinder","_utilSearchingFieldsFieldFinder2","TOKEN_URL","AlarmsSearchBuilder","_SearchWithSummaryBuilder","fieldFinder","onDevices","onSubscriptions","_routes","../../util/searchingFields/FieldFinder","./SearchWithSummaryBuilder","268","AllowedResourceTypeSearchBuilder","269","BASE_URL","AreasSearchBuilder","270","_PreFilteredSearchBuilder2","_PreFilteredSearchBuilder3","_AssetSearch","_AssetSearch2","AssetsSearchBuilder","_PreFilteredSearchBuilder","finalFilter","provision.asset.identifier","_group","_buildLimit","_buildSort","_buildGroup","_buildSelect","_urlParams","_select","../AssetSearch","./PreFilteredSearchBuilder","271","BasicTypesSearchBuilder","_og_basic_types","publicParameters","newPath","pathExpression","jsonSchemaValue","272","_WPSearch","_WPSearch2","BulkExecutionSearchBuilder","../WPSearch","273","BulkSearchBuilder","274","BundlesSearchBuilder","275","CertificatesSearchBuilder","_fetch","_assignable","fetch","visibility","276","ChannelsSearchBuilder","_summary","defaultSorted","277","CommunicationsModuleTypeSearchBuilder","278","CountryCodesSearchBuilder","279","DatamodelsSearchBuilder","280","DatapointsSearchBuilder","fluentFilter","tagsFilter","datastreamId","feedId","fromDate","_fluentFilter","_customFilter","../../util/DATE_FORMAT","281","_EntitySearch","_EntitySearch2","DatasetEntitiesSearchBuilder","caseSensitive","../EntitySearch","282","DatasetSearchBuilder","283","DatasetsCatalogSearchBuilder","284","DatastreamsSearchBuilder","../Search","285","DevicesPlansSearchBuilder","domainName","_domainName","286","DevicesSearchBuilder","provision.device.identifier","287","DomainsSearchBuilder","288","EntitiesSearchBuilder","289","ExecutionsHistorySearchBuilder","290","ExecutionsSearchBuilder","onSubscribers","onCommunicationsModules","_checkConstraintRoutes","291","FeedsSearchBuilder","292","FieldsDefinitionSearchBuilder","fieldDefinitionType","293","_DeviceSearch","_DeviceSearch2","FlattenedSearchBuilder","../DeviceSearch","294","HardwaresSearchBuilder","295","IoTDatastreamAccessSearchBuilder","296","IoTDatastreamPeriodSearchBuilder","297","IoTDatastreamStoragePeriodSearchBuilder","298","MobilePhoneProviderSearchBuilder","299","OperationTypesBuilder","300","OperationalStatusSearchBuilder","operationalStatusId","301","OperationsSearchBuilder","302","PlansSearchBuilder","303","_FlattenedSearchBuilder2","_FlattenedSearchBuilder3","PreFilteredSearchBuilder","_FlattenedSearchBuilder","_provisioned","_collected","./FlattenedSearchBuilder","304","RawSearchBuilder","rawFilter","rawLimit","305","ResourceTypeSearchBuilder","306","RulesSearchBuilder","307","SearchBuilder","_fieldFinder","_routesName","summary","_route","findAll","findFieldPath","filterField","addSortBy","typeSort","_groupTemplate","isMultipleRouteEnabled","atLeastOneTrue","308","SearchWithSummaryBuilder","309","staticSearchType","ServiceGroupSearchBuilder","310","SOFTWARE_TYPES_ENUM","SoftwaresSearchBuilder","softwareId","softwareName","softwareType","softwareVersion","hardwareId","311","SubscribersSearchBuilder","provision.device.communicationModules[].subscriber.identifier","device.communicationModules[].subscriber.identifier","312","SubscriptionsSearchBuilder","provision.device.communicationModules[].subscription.identifier","device.communicationModules[].subscription.identifier","313","TasksSearchBuilder","314","TicketPrioritySearchBuilder","315","TicketSeveritySearchBuilder","316","TicketStatusSearchBuilder","317","TicketsSearchBuilder","318","TimeserieSearchBuilder","319","TimezoneSearchBuilder","320","UserLanguagesSearchBuilder","321","UserProfilesSearchBuilder","userProfileId","322","UsersSearchBuilder","323","WorkgroupsSearchBuilder","324","ADMINISTRATIVE_STATE_ENUM","325","_MIME_TYPES_ENUM","CertificateFinder","./MIME_TYPES_ENUM","326","_Security2","_Security3","_ADMINISTRATIVE_STATE_ENUM","_USAGES_ENUM","max_length_name","max_length_id","max_length_description","Certificates","_Security","_administrativeState","usages","USAGES_ENUM","_usages","_checkHardware","igerr","eval","not_correct","domains","_domains","./ADMINISTRATIVE_STATE_ENUM","./Security","./USAGES_ENUM","327","328","Security","329","330","Timeseries","_checkStringAndPattern","timeBucket","_timeBucket","bucketColumn","_bucketColumn","retention","_retention","_checkISODateTime","_origin","_context","331","TimeseriesFinder","timeserieId","332","TransformerFinder","333","Transformers","_files","transformer","334","UserFinder","X-ApiPass","335","User","surname","_surname","_password","profile","_profile","_timezone","newPassword","_newPassword","tokenId","_tokenId","336","337","neq","338","_urlencode","_urlencode2","_superagent","_superagentMocker","_superagentMocker2","NorthAmpliaREST","mocks","_applyMocks","toLocaleUpperCase","methodByUrl","asBlob","_createUrl","_createPromiseRequest","formData","sendFormData","Content-Type","relativeUrl","queryParameter","relativeUrlSplit","_item","_getDefaultBaseURL","_isSouth","_req","_event","errorMessage","superagent-mocker","urlencode","339","SelectElement","340","_NorthAmpliaREST2","_NorthAmpliaREST3","SouthAmpliaREST","_NorthAmpliaREST","south","./NorthAmpliaREST","341","342","_FIELD_SEARCHER","_sourcePrecompiledFields","_IotFields","FIELDS","GENERATED_FIELDS","IOT_FIELDS","subfield","REGEX_PATH_CURRENT","REGEX_PATH_ARRAY","match_url","/jobs","/tasks","/alarms","/operations","/operations/history","/certificates","/bundles","/datapoints","/datastreams","/datamodels","/dmmQRating","/iotQRating","/catalog/softwares","/catalog/hardwares","/catalog/operators","/domains","/users","/areas","/bulk/async","provisionProcessors/bulk/search","/devices","/subscriptions","/subscribers","/entities","entity-asset","/tickets","/channels","datasets","timeseries","match_context","ENTITY_ALARM","UPDATE_BUNDLE_VERSION","DATAPOINTS","ENTITY_OPERATION","match_url_resourceType","match_type","communicationsModule","match_type_inverse","DEVICE_PART_SUBSCRIBER","DEVICE_PART_SUBSCRIPTION","DEVICE_PART_COMMSMODULE","DEVICE_PART_DEVICE","fields_related","complexPrimaryType","complexFields","SEARCH_FIELDS","TYPE_FIELD","_getDatamodelFields","objSearcher","preVal","selectedField","selectAll","extraData","datamodelSearchBuilder","rtFilter","_resourceTypes","datamodels","dsIdTmp","_searchColumns","finder","columnDatastreams","api","indexed","notFilterable","basicTypes","datastreamMatch","datamodelFields","df","FIELD_SEARCHER","primaryType","fieldIdx","fieldMatch","fieldTmp","ctxMatch","fieldsCfg","fieldsNestedState","fieldsRelated","filterRelatedEntities","relatedEntity","appendPreviousStates","states","arrayField","finiteStateMachine","secondState","statesSize","currentState","FieldFinder","_extraData","./IotFields","./source-precompiled/Fields","343","DATAMODELS","DATASTREAMS","IOT","USER","DOMAIN","AREAS","TASKS","LEGACY_BULK","userEmail","headerAccept","headerCsvFormat","paramsFlattened","paramsAction","paramsFull","paramsType","startedDate","finishedDate","processed","successful","BULK","provisionProcessorId","RULE","organizationId","channelId","alarmSubEntityIdentifier","entityId","organizationName","channelName","alarmRuleName","alarmName","alarmSeverity","alarmPriority","alarmDescription","alarmStatus","alarmOpenDate","alarmAttentionDate","alarmAttentionUser","alarmAttentionNote","alarmClosureDate","alarmClosureUser","alarmClosureNote","GENERAL","EMPTY","OPERATORS","344","ENTITY_OPERATION_HISTORY","MANUFACTURER","MODEL","JOB","SOFTWARE_VERSION","345","WorkgroupFinder","346","_Workgroups","_Workgroups2","WorkgroupRelations","_channels","relations","../channels/Channels","./Workgroups","347","WorkgroupRelationsFinder","348","Workgroups","administrative","_administrative"],"mappings":"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O,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO,oEACP,OAAO,mGACP,OAAO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,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;ulCAAOC,SAAW,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,M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AAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAC1BC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACtFC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACt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","file":"opengate-api-bower-12.0.0.min.js","sourceRoot":".."} \ No newline at end of file diff --git a/dist/opengate-api-bower-12.0.0.js b/dist/opengate-api-bower-12.0.1.js similarity index 71% rename from dist/opengate-api-bower-12.0.0.js rename to dist/opengate-api-bower-12.0.1.js index 9cd7e17be..9c411ab44 100755 --- a/dist/opengate-api-bower-12.0.0.js +++ b/dist/opengate-api-bower-12.0.1.js @@ -42,9 +42,9 @@ exports['default'] = OpenGateAPI; window.OpenGateAPI = OpenGateAPI; module.exports = exports['default']; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2NoZW1hcGVyZXovZGV2ZWxvcG1lbnQvZ2l0L3dlYi9vcGVuZ2F0ZS1qcy9mYWtlX2Q1YzdlNjI0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7c0NBRW1CLDJCQUEyQjs7OztzQ0FDL0IsNEJBQTRCOzs7O3NDQUM1Qiw0QkFBNEI7Ozs7SUFFbkMsV0FBVztjQUFYLFdBQVc7O0FBQ2pCLGFBRE0sV0FBVyxDQUNoQixRQUFRLEVBQUU7OEJBREwsV0FBVzs7QUFFeEIsbUNBRmEsV0FBVyw2Q0FHcEIsd0NBQW9CLFFBQVEsQ0FBQyxFQUM3Qix3Q0FBb0IsUUFBUSxDQUFDLEVBQzdCLFFBQVEsRUFDVjtLQUNMOztXQVBnQixXQUFXOzs7cUJBQVgsV0FBVzs7QUFVaEMsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMiLCJmaWxlIjoiL2hvbWUvY2hlbWFwZXJlei9kZXZlbG9wbWVudC9naXQvd2ViL29wZW5nYXRlLWpzL2Zha2VfZDVjN2U2MjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgSW50ZXJuYWxPcGVuR2F0ZUFQSSBmcm9tICcuL3NyYy9JbnRlcm5hbE9wZW5HYXRlQVBJJztcclxuaW1wb3J0IE5vcnRoQW1wbGlhUkVTVCBmcm9tICcuL3NyYy91dGlsL05vcnRoQW1wbGlhUkVTVCc7XHJcbmltcG9ydCBTb3V0aEFtcGxpYVJFU1QgZnJvbSAnLi9zcmMvdXRpbC9Tb3V0aEFtcGxpYVJFU1QnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BlbkdhdGVBUEkgZXh0ZW5kcyBJbnRlcm5hbE9wZW5HYXRlQVBJIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoXHJcbiAgICAgICAgICAgIG5ldyBOb3J0aEFtcGxpYVJFU1QoX29wdGlvbnMpLFxyXG4gICAgICAgICAgICBuZXcgU291dGhBbXBsaWFSRVNUKF9vcHRpb25zKSxcclxuICAgICAgICAgICAgX29wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG53aW5kb3cuT3BlbkdhdGVBUEkgPSBPcGVuR2F0ZUFQSTsiXX0= -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_d5c7e624.js","/") -},{"./src/InternalOpenGateAPI":139,"./src/util/NorthAmpliaREST":338,"./src/util/SouthAmpliaREST":340,"FWaASH":50,"buffer":52}],2:[function(require,module,exports){ +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL2plbmtpbnMvd29ya3NwYWNlL29nLXV4X2dlbmVyYXRlX3JlbGVhc2VfZnJvbV9naXRodWIvZmFrZV8xMmI5ZjQ0Yi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7O3NDQUVtQiwyQkFBMkI7Ozs7c0NBQy9CLDRCQUE0Qjs7OztzQ0FDNUIsNEJBQTRCOzs7O0lBRW5DLFdBQVc7Y0FBWCxXQUFXOztBQUNqQixhQURNLFdBQVcsQ0FDaEIsUUFBUSxFQUFFOzhCQURMLFdBQVc7O0FBRXhCLG1DQUZhLFdBQVcsNkNBR3BCLHdDQUFvQixRQUFRLENBQUMsRUFDN0Isd0NBQW9CLFFBQVEsQ0FBQyxFQUM3QixRQUFRLEVBQ1Y7S0FDTDs7V0FQZ0IsV0FBVzs7O3FCQUFYLFdBQVc7O0FBVWhDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDIiwiZmlsZSI6Ii9ob21lL2plbmtpbnMvd29ya3NwYWNlL29nLXV4X2dlbmVyYXRlX3JlbGVhc2VfZnJvbV9naXRodWIvZmFrZV8xMmI5ZjQ0Yi5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcclxuXHJcbmltcG9ydCBJbnRlcm5hbE9wZW5HYXRlQVBJIGZyb20gJy4vc3JjL0ludGVybmFsT3BlbkdhdGVBUEknO1xyXG5pbXBvcnQgTm9ydGhBbXBsaWFSRVNUIGZyb20gJy4vc3JjL3V0aWwvTm9ydGhBbXBsaWFSRVNUJztcclxuaW1wb3J0IFNvdXRoQW1wbGlhUkVTVCBmcm9tICcuL3NyYy91dGlsL1NvdXRoQW1wbGlhUkVTVCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGVuR2F0ZUFQSSBleHRlbmRzIEludGVybmFsT3BlbkdhdGVBUEkge1xyXG4gICAgY29uc3RydWN0b3IoX29wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihcclxuICAgICAgICAgICAgbmV3IE5vcnRoQW1wbGlhUkVTVChfb3B0aW9ucyksXHJcbiAgICAgICAgICAgIG5ldyBTb3V0aEFtcGxpYVJFU1QoX29wdGlvbnMpLFxyXG4gICAgICAgICAgICBfb3B0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuXHJcbndpbmRvdy5PcGVuR2F0ZUFQSSA9IE9wZW5HYXRlQVBJOyJdfQ== +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_12b9f44b.js","/") +},{"./src/InternalOpenGateAPI":139,"./src/util/NorthAmpliaREST":338,"./src/util/SouthAmpliaREST":340,"buffer":57,"lYpoI2":59}],2:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -553,8 +553,8 @@ function setLogger(self) { function noop() {} -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/ajv.js","/node_modules/ajv/lib") -},{"./cache":3,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./data":13,"./keyword":41,"./refs/data.json":42,"./refs/json-schema-draft-07.json":43,"FWaASH":50,"buffer":52,"fast-json-stable-stringify":75}],3:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/ajv.js","/node_modules/ajv/lib") +},{"./cache":3,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./data":13,"./keyword":41,"./refs/data.json":42,"./refs/json-schema-draft-07.json":43,"buffer":57,"fast-json-stable-stringify":50,"lYpoI2":59}],3:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -583,8 +583,8 @@ Cache.prototype.clear = function Cache_clear() { this._cache = {}; }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/cache.js","/node_modules/ajv/lib") -},{"FWaASH":50,"buffer":52}],4:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/cache.js","/node_modules/ajv/lib") +},{"buffer":57,"lYpoI2":59}],4:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -677,8 +677,8 @@ function compileAsync(schema, meta, callback) { } } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/async.js","/node_modules/ajv/lib/compile") -},{"./error_classes":5,"FWaASH":50,"buffer":52}],5:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/async.js","/node_modules/ajv/lib/compile") +},{"./error_classes":5,"buffer":57,"lYpoI2":59}],5:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -715,8 +715,8 @@ function errorSubclass(Subclass) { return Subclass; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/error_classes.js","/node_modules/ajv/lib/compile") -},{"./resolve":8,"FWaASH":50,"buffer":52}],6:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/error_classes.js","/node_modules/ajv/lib/compile") +},{"./resolve":8,"buffer":57,"lYpoI2":59}],6:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -733,8 +733,8 @@ var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@| // For the source: https://gist.github.com/dperini/729294 // For test cases: https://mathiasbynens.be/demo/url-regex // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; +// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; +var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; @@ -756,8 +756,8 @@ formats.fast = { time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, 'uri-template': URITEMPLATE, url: URL, // email (sources from jsen validator): @@ -861,8 +861,8 @@ function regex(str) { } } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/formats.js","/node_modules/ajv/lib/compile") -},{"./util":12,"FWaASH":50,"buffer":52}],7:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/formats.js","/node_modules/ajv/lib/compile") +},{"./util":12,"buffer":57,"lYpoI2":59}],7:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -979,7 +979,7 @@ function compile(schema, root, localRefs, baseId) { + vars(defaults, defaultCode) + vars(customRules, customRuleCode) + sourceCode; - if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); + if (opts.processCode) sourceCode = opts.processCode(sourceCode); // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); var validate; try { @@ -1252,8 +1252,8 @@ function vars(arr, statement) { return code; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/index.js","/node_modules/ajv/lib/compile") -},{"../dotjs/validate":40,"./error_classes":5,"./resolve":8,"./util":12,"FWaASH":50,"buffer":52,"fast-deep-equal":74,"fast-json-stable-stringify":75}],8:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/index.js","/node_modules/ajv/lib/compile") +},{"../dotjs/validate":40,"./error_classes":5,"./resolve":8,"./util":12,"buffer":57,"fast-deep-equal":49,"fast-json-stable-stringify":50,"lYpoI2":59}],8:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1526,8 +1526,8 @@ function resolveIds(schema) { return localRefs; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/resolve.js","/node_modules/ajv/lib/compile") -},{"./schema_obj":10,"./util":12,"FWaASH":50,"buffer":52,"fast-deep-equal":74,"json-schema-traverse":101,"uri-js":134}],9:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/resolve.js","/node_modules/ajv/lib/compile") +},{"./schema_obj":10,"./util":12,"buffer":57,"fast-deep-equal":49,"json-schema-traverse":92,"lYpoI2":59,"uri-js":134}],9:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1596,8 +1596,8 @@ module.exports = function rules() { return RULES; }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/rules.js","/node_modules/ajv/lib/compile") -},{"../dotjs":29,"./util":12,"FWaASH":50,"buffer":52}],10:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/rules.js","/node_modules/ajv/lib/compile") +},{"../dotjs":29,"./util":12,"buffer":57,"lYpoI2":59}],10:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1609,8 +1609,8 @@ function SchemaObject(obj) { util.copy(obj, this); } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/schema_obj.js","/node_modules/ajv/lib/compile") -},{"./util":12,"FWaASH":50,"buffer":52}],11:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/schema_obj.js","/node_modules/ajv/lib/compile") +},{"./util":12,"buffer":57,"lYpoI2":59}],11:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1633,8 +1633,8 @@ module.exports = function ucs2length(str) { return length; }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/ucs2length.js","/node_modules/ajv/lib/compile") -},{"FWaASH":50,"buffer":52}],12:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/ucs2length.js","/node_modules/ajv/lib/compile") +},{"buffer":57,"lYpoI2":59}],12:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1651,6 +1651,8 @@ module.exports = { ucs2length: require('./ucs2length'), varOccurences: varOccurences, varReplace: varReplace, + cleanUpCode: cleanUpCode, + finalCleanUpCode: finalCleanUpCode, schemaHasRules: schemaHasRules, schemaHasRulesExcept: schemaHasRulesExcept, schemaUnknownRules: schemaUnknownRules, @@ -1672,7 +1674,7 @@ function copy(o, to) { } -function checkDataType(dataType, data, strictNumbers, negate) { +function checkDataType(dataType, data, negate) { var EQUAL = negate ? ' !== ' : ' === ' , AND = negate ? ' || ' : ' && ' , OK = negate ? '!' : '' @@ -1685,18 +1687,15 @@ function checkDataType(dataType, data, strictNumbers, negate) { NOT + 'Array.isArray(' + data + '))'; case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; - case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + AND + data + EQUAL + data + ')'; default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; } } -function checkDataTypes(dataTypes, data, strictNumbers) { +function checkDataTypes(dataTypes, data) { switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); + case 1: return checkDataType(dataTypes[0], data, true); default: var code = ''; var types = toHash(dataTypes); @@ -1709,7 +1708,7 @@ function checkDataTypes(dataTypes, data, strictNumbers) { } if (types.number) delete types.integer; for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); + code += (code ? ' && ' : '' ) + checkDataType(t, data, true); return code; } @@ -1775,6 +1774,42 @@ function varReplace(str, dataVar, expr) { } +var EMPTY_ELSE = /else\s*{\s*}/g + , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g + , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; +function cleanUpCode(out) { + return out.replace(EMPTY_ELSE, '') + .replace(EMPTY_IF_NO_ELSE, '') + .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); +} + + +var ERRORS_REGEXP = /[^v.]errors/g + , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g + , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g + , RETURN_VALID = 'return errors === 0;' + , RETURN_TRUE = 'validate.errors = null; return true;' + , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/ + , RETURN_DATA_ASYNC = 'return data;' + , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g + , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/; + +function finalCleanUpCode(out, async) { + var matches = out.match(ERRORS_REGEXP); + if (matches && matches.length == 2) { + out = async + ? out.replace(REMOVE_ERRORS_ASYNC, '') + .replace(RETURN_ASYNC, RETURN_DATA_ASYNC) + : out.replace(REMOVE_ERRORS, '') + .replace(RETURN_VALID, RETURN_TRUE); + } + + matches = out.match(ROOTDATA_REGEXP); + if (!matches || matches.length !== 3) return out; + return out.replace(REMOVE_ROOTDATA, ''); +} + + function schemaHasRules(schema, rules) { if (typeof schema == 'boolean') return !schema; for (var key in schema) if (rules[key]) return true; @@ -1853,7 +1888,7 @@ function getData($data, lvl, paths) { function joinPaths (a, b) { if (a == '""') return b; - return (a + ' + ' + b).replace(/([^\\])' \+ '/g, '$1'); + return (a + ' + ' + b).replace(/' \+ '/g, ''); } @@ -1876,8 +1911,8 @@ function unescapeJsonPointer(str) { return str.replace(/~1/g, '/').replace(/~0/g, '~'); } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/util.js","/node_modules/ajv/lib/compile") -},{"./ucs2length":11,"FWaASH":50,"buffer":52,"fast-deep-equal":74}],13:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/compile/util.js","/node_modules/ajv/lib/compile") +},{"./ucs2length":11,"buffer":57,"fast-deep-equal":49,"lYpoI2":59}],13:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -1919,7 +1954,7 @@ module.exports = function (metaSchema, keywordsJsonPointers) { keywords[key] = { anyOf: [ schema, - { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' } + { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' } ] }; } @@ -1929,15 +1964,15 @@ module.exports = function (metaSchema, keywordsJsonPointers) { return metaSchema; }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/data.js","/node_modules/ajv/lib") -},{"FWaASH":50,"buffer":52}],14:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/data.js","/node_modules/ajv/lib") +},{"buffer":57,"lYpoI2":59}],14:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; var metaSchema = require('./refs/json-schema-draft-07.json'); module.exports = { - $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js', + $id: 'https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js', definitions: { simpleTypes: metaSchema.definitions.simpleTypes }, @@ -1970,8 +2005,8 @@ module.exports = { } }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/definition_schema.js","/node_modules/ajv/lib") -},{"./refs/json-schema-draft-07.json":43,"FWaASH":50,"buffer":52}],15:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/definition_schema.js","/node_modules/ajv/lib") +},{"./refs/json-schema-draft-07.json":43,"buffer":57,"lYpoI2":59}],15:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limit(it, $keyword, $ruleType) { @@ -1999,12 +2034,6 @@ module.exports = function generate__limit(it, $keyword, $ruleType) { $op = $isMax ? '<' : '>', $notOp = $isMax ? '>' : '<', $errorKeyword = undefined; - if (!($isData || typeof $schema == 'number' || $schema === undefined)) { - throw new Error($keyword + ' must be number'); - } - if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { - throw new Error($exclusiveKeyword + ' must be number or boolean'); - } if ($isDataExcl) { var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), $exclusive = 'exclusive' + $lvl, @@ -2137,8 +2166,8 @@ module.exports = function generate__limit(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limit.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],16:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limit.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],16:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitItems(it, $keyword, $ruleType) { @@ -2159,9 +2188,6 @@ module.exports = function generate__limitItems(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } var $op = $keyword == 'maxItems' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2221,8 +2247,8 @@ module.exports = function generate__limitItems(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitItems.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],17:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitItems.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],17:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitLength(it, $keyword, $ruleType) { @@ -2243,9 +2269,6 @@ module.exports = function generate__limitLength(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } var $op = $keyword == 'maxLength' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2310,8 +2333,8 @@ module.exports = function generate__limitLength(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitLength.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],18:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitLength.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],18:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate__limitProperties(it, $keyword, $ruleType) { @@ -2332,9 +2355,6 @@ module.exports = function generate__limitProperties(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } var $op = $keyword == 'maxProperties' ? '>' : '<'; out += 'if ( '; if ($isData) { @@ -2394,8 +2414,8 @@ module.exports = function generate__limitProperties(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitProperties.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],19:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/_limitProperties.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],19:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_allOf(it, $keyword, $ruleType) { @@ -2416,7 +2436,7 @@ module.exports = function generate_allOf(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { $allSchemasEmpty = false; $it.schema = $sch; $it.schemaPath = $schemaPath + '[' + $i + ']'; @@ -2437,11 +2457,12 @@ module.exports = function generate_allOf(it, $keyword, $ruleType) { out += ' ' + ($closingBraces.slice(0, -1)) + ' '; } } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/allOf.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],20:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/allOf.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],20:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_anyOf(it, $keyword, $ruleType) { @@ -2460,7 +2481,7 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { $it.level++; var $nextValid = 'valid' + $it.level; var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); + return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all)); }); if ($noEmptySchema) { var $currentBaseId = $it.baseId; @@ -2509,6 +2530,7 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { if (it.opts.allErrors) { out += ' } '; } + out = it.util.cleanUpCode(out); } else { if ($breakOnError) { out += ' if (true) { '; @@ -2517,8 +2539,8 @@ module.exports = function generate_anyOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/anyOf.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],21:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/anyOf.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],21:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_comment(it, $keyword, $ruleType) { @@ -2535,8 +2557,8 @@ module.exports = function generate_comment(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/comment.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],22:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/comment.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],22:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_const(it, $keyword, $ruleType) { @@ -2595,8 +2617,8 @@ module.exports = function generate_const(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/const.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],23:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/const.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],23:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_contains(it, $keyword, $ruleType) { @@ -2618,7 +2640,7 @@ module.exports = function generate_contains(it, $keyword, $ruleType) { $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = 'data' + $dataNxt, $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); + $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all)); out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; if ($nonEmptySchema) { var $wasComposite = it.compositeRule; @@ -2677,11 +2699,12 @@ module.exports = function generate_contains(it, $keyword, $ruleType) { if (it.opts.allErrors) { out += ' } '; } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/contains.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],24:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/contains.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],24:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_custom(it, $keyword, $ruleType) { @@ -2912,8 +2935,8 @@ module.exports = function generate_custom(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/custom.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],25:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/custom.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],25:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_dependencies(it, $keyword, $ruleType) { @@ -2934,7 +2957,6 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { $propertyDeps = {}, $ownProperties = it.opts.ownProperties; for ($property in $schema) { - if ($property == '__proto__') continue; var $sch = $schema[$property]; var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; $deps[$property] = $sch; @@ -3060,7 +3082,7 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { var $currentBaseId = $it.baseId; for (var $property in $schemaDeps) { var $sch = $schemaDeps[$property]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; if ($ownProperties) { out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; @@ -3081,11 +3103,12 @@ module.exports = function generate_dependencies(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/dependencies.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],26:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/dependencies.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],26:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_enum(it, $keyword, $ruleType) { @@ -3154,8 +3177,8 @@ module.exports = function generate_enum(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/enum.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],27:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/enum.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],27:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_format(it, $keyword, $ruleType) { @@ -3308,8 +3331,8 @@ module.exports = function generate_format(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/format.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],28:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/format.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],28:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_if(it, $keyword, $ruleType) { @@ -3328,8 +3351,8 @@ module.exports = function generate_if(it, $keyword, $ruleType) { var $nextValid = 'valid' + $it.level; var $thenSch = it.schema['then'], $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), + $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)), + $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)), $currentBaseId = $it.baseId; if ($thenPresent || $elsePresent) { var $ifClause; @@ -3407,6 +3430,7 @@ module.exports = function generate_if(it, $keyword, $ruleType) { if ($breakOnError) { out += ' else { '; } + out = it.util.cleanUpCode(out); } else { if ($breakOnError) { out += ' if (true) { '; @@ -3415,8 +3439,8 @@ module.exports = function generate_if(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/if.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],29:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/if.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],29:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -3452,8 +3476,8 @@ module.exports = { validate: require('./validate') }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/index.js","/node_modules/ajv/lib/dotjs") -},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40,"FWaASH":50,"buffer":52}],30:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/index.js","/node_modules/ajv/lib/dotjs") +},{"./_limit":15,"./_limitItems":16,"./_limitLength":17,"./_limitProperties":18,"./allOf":19,"./anyOf":20,"./comment":21,"./const":22,"./contains":23,"./dependencies":25,"./enum":26,"./format":27,"./if":28,"./items":30,"./multipleOf":31,"./not":32,"./oneOf":33,"./pattern":34,"./properties":35,"./propertyNames":36,"./ref":37,"./required":38,"./uniqueItems":39,"./validate":40,"buffer":57,"lYpoI2":59}],30:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_items(it, $keyword, $ruleType) { @@ -3523,7 +3547,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; var $passData = $data + '[' + $i + ']'; $it.schema = $sch; @@ -3546,7 +3570,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { } } } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { + if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) { $it.schema = $additionalItems; $it.schemaPath = it.schemaPath + '.additionalItems'; $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; @@ -3570,7 +3594,7 @@ module.exports = function generate_items(it, $keyword, $ruleType) { $closingBraces += '}'; } } - } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -3593,11 +3617,12 @@ module.exports = function generate_items(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/items.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],31:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/items.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],31:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_multipleOf(it, $keyword, $ruleType) { @@ -3617,9 +3642,6 @@ module.exports = function generate_multipleOf(it, $keyword, $ruleType) { } else { $schemaValue = $schema; } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } out += 'var division' + ($lvl) + ';if ('; if ($isData) { out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; @@ -3680,8 +3702,8 @@ module.exports = function generate_multipleOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/multipleOf.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],32:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/multipleOf.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],32:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_not(it, $keyword, $ruleType) { @@ -3697,7 +3719,7 @@ module.exports = function generate_not(it, $keyword, $ruleType) { var $it = it.util.copy(it); $it.level++; var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -3768,8 +3790,8 @@ module.exports = function generate_not(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/not.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],33:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/not.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],33:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_oneOf(it, $keyword, $ruleType) { @@ -3799,7 +3821,7 @@ module.exports = function generate_oneOf(it, $keyword, $ruleType) { l1 = arr1.length - 1; while ($i < l1) { $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { $it.schema = $sch; $it.schemaPath = $schemaPath + '[' + $i + ']'; $it.errSchemaPath = $errSchemaPath + '/' + $i; @@ -3845,8 +3867,8 @@ module.exports = function generate_oneOf(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/oneOf.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],34:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/oneOf.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],34:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_pattern(it, $keyword, $ruleType) { @@ -3924,8 +3946,8 @@ module.exports = function generate_pattern(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/pattern.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],35:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/pattern.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],35:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_properties(it, $keyword, $ruleType) { @@ -3947,9 +3969,9 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { $dataNxt = $it.dataLevel = it.dataLevel + 1, $nextData = 'data' + $dataNxt, $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}).filter(notProto), + var $schemaKeys = Object.keys($schema || {}), $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties).filter(notProto), + $pPropertyKeys = Object.keys($pProperties), $aProperties = it.schema.additionalProperties, $someProperties = $schemaKeys.length || $pPropertyKeys.length, $noAdditional = $aProperties === false, @@ -3959,13 +3981,7 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { $ownProperties = it.opts.ownProperties, $currentBaseId = it.baseId; var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { - var $requiredHash = it.util.toHash($required); - } - - function notProto(p) { - return p !== '__proto__'; - } + if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; if ($ownProperties) { out += ' var ' + ($dataProperties) + ' = undefined;'; @@ -4118,7 +4134,7 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { while (i3 < l3) { $propertyKey = arr3[i3 += 1]; var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { var $prop = it.util.getProperty($propertyKey), $passData = $data + $prop, $hasDefault = $useDefaults && $sch.default !== undefined; @@ -4221,7 +4237,7 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { while (i4 < l4) { $pProperty = arr4[i4 += 1]; var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) { $it.schema = $sch; $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); @@ -4260,11 +4276,12 @@ module.exports = function generate_properties(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/properties.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],36:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/properties.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],36:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_propertyNames(it, $keyword, $ruleType) { @@ -4282,7 +4299,7 @@ module.exports = function generate_propertyNames(it, $keyword, $ruleType) { $it.level++; var $nextValid = 'valid' + $it.level; out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) { $it.schema = $schema; $it.schemaPath = $schemaPath; $it.errSchemaPath = $errSchemaPath; @@ -4345,11 +4362,12 @@ module.exports = function generate_propertyNames(it, $keyword, $ruleType) { if ($breakOnError) { out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; } + out = it.util.cleanUpCode(out); return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/propertyNames.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],37:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/propertyNames.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],37:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_ref(it, $keyword, $ruleType) { @@ -4476,8 +4494,8 @@ module.exports = function generate_ref(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/ref.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],38:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/ref.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],38:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_required(it, $keyword, $ruleType) { @@ -4509,7 +4527,7 @@ module.exports = function generate_required(it, $keyword, $ruleType) { while (i1 < l1) { $property = arr1[i1 += 1]; var $propertySch = it.schema.properties[$property]; - if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { + if (!($propertySch && (it.opts.strictKeywords ? typeof $propertySch == 'object' && Object.keys($propertySch).length > 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) { $required[$required.length] = $property; } } @@ -4750,8 +4768,8 @@ module.exports = function generate_required(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/required.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],39:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/required.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],39:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { @@ -4784,7 +4802,7 @@ module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { } else { out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; + out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; '; if ($typeIsArray) { out += ' if (typeof item == \'string\') item = \'"\' + item; '; } @@ -4840,8 +4858,8 @@ module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/uniqueItems.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],40:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/uniqueItems.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],40:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; module.exports = function generate_validate(it, $keyword, $ruleType) { @@ -4936,7 +4954,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); it.baseId = it.baseId || it.rootId; delete it.isTop; - it.dataPathArr = [""]; + it.dataPathArr = [undefined]; if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { var $defaultMsg = 'default is ignored in the schema root'; if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); @@ -4994,39 +5012,47 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { var $schemaPath = it.schemaPath + '.type', $errSchemaPath = it.errSchemaPath + '/type', $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { '; + out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; if ($coerceToTypes) { var $dataType = 'dataType' + $lvl, $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; '; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } '; + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; } - out += ' if (' + ($coerced) + ' !== undefined) ; '; + out += ' var ' + ($coerced) + ' = undefined; '; + var $bracesCoercion = ''; var arr1 = $coerceToTypes; if (arr1) { var $type, $i = -1, l1 = arr1.length - 1; while ($i < l1) { $type = arr1[$i += 1]; + if ($i) { + out += ' if (' + ($coerced) + ' === undefined) { '; + $bracesCoercion += '}'; + } + if (it.opts.coerceTypes == 'array' && $type != 'array') { + out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; + } if ($type == 'string') { - out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; } else if ($type == 'number' || $type == 'integer') { - out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; if ($type == 'integer') { out += ' && !(' + ($data) + ' % 1)'; } out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; } else if ($type == 'boolean') { - out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; } else if ($type == 'null') { - out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; } } } - out += ' else { '; + out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; var $$outStack = $$outStack || []; $$outStack.push(out); out = ''; /* istanbul ignore else */ @@ -5066,7 +5092,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { } else { out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; } - out += ' } if (' + ($coerced) + ' !== undefined) { '; + out += ' } else { '; var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; out += ' ' + ($data) + ' = ' + ($coerced) + '; '; @@ -5139,7 +5165,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { $rulesGroup = arr2[i2 += 1]; if ($shouldUseGroup($rulesGroup)) { if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { '; + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; } if (it.opts.useDefaults) { if ($rulesGroup.type == 'object' && it.schema.properties) { @@ -5307,6 +5333,10 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { } else { out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; } + out = it.util.cleanUpCode(out); + if ($top) { + out = it.util.finalCleanUpCode(out, $async); + } function $shouldUseGroup($rulesGroup) { var rules = $rulesGroup.rules; @@ -5326,8 +5356,8 @@ module.exports = function generate_validate(it, $keyword, $ruleType) { return out; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/validate.js","/node_modules/ajv/lib/dotjs") -},{"FWaASH":50,"buffer":52}],41:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/dotjs/validate.js","/node_modules/ajv/lib/dotjs") +},{"buffer":57,"lYpoI2":59}],41:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ 'use strict'; @@ -5377,7 +5407,7 @@ function addKeyword(keyword, definition) { metaSchema = { anyOf: [ metaSchema, - { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' } + { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' } ] }; } @@ -5476,11 +5506,11 @@ function validateKeyword(definition, throwError) { return false; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/keyword.js","/node_modules/ajv/lib") -},{"./definition_schema":14,"./dotjs/custom":24,"FWaASH":50,"buffer":52}],42:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ajv/lib/keyword.js","/node_modules/ajv/lib") +},{"./definition_schema":14,"./dotjs/custom":24,"buffer":57,"lYpoI2":59}],42:[function(require,module,exports){ module.exports={ "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", + "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#", "description": "Meta-schema for $data reference (JSON Schema extension proposal)", "type": "object", "required": [ "$data" ], @@ -5668,1192 +5698,1178 @@ module.exports={ },{}],44:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -// when used in node, this will actually load the util module we depend on -// versus loading the builtin util module as happens otherwise -// this is a bug in node module loading as far as I am concerned -var util = require('util/'); + +/** + * Expose `Emitter`. + */ + +if (typeof module !== 'undefined') { + module.exports = Emitter; +} + +/** + * Initialize a new `Emitter`. + * + * @api public + */ + +function Emitter(obj) { + if (obj) return mixin(obj); +}; + +/** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; +} + +/** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.on = +Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; +}; + +/** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; +}; + +/** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.off = +Emitter.prototype.removeListener = +Emitter.prototype.removeAllListeners = +Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; +}; + +/** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + +Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; +}; + +/** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + +Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; +}; + +/** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + +Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; +}; -var pSlice = Array.prototype.slice; -var hasOwn = Object.prototype.hasOwnProperty; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/component-emitter/index.js","/node_modules/component-emitter") +},{"buffer":57,"lYpoI2":59}],45:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: -var assert = module.exports = ok; + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - if (options.message) { - this.message = options.message; - this.generatedMessage = false; - } else { - this.message = getMessage(this); - this.generatedMessage = true; - } - var stackStartFunction = options.stackStartFunction || fail; +(function () { + 'use strict'; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } - else { - // non v8 browsers so we can have a stacktrace - var err = new Error(); - if (err.stack) { - var out = err.stack; + function isExpression(node) { + if (node == null) { return false; } + switch (node.type) { + case 'ArrayExpression': + case 'AssignmentExpression': + case 'BinaryExpression': + case 'CallExpression': + case 'ConditionalExpression': + case 'FunctionExpression': + case 'Identifier': + case 'Literal': + case 'LogicalExpression': + case 'MemberExpression': + case 'NewExpression': + case 'ObjectExpression': + case 'SequenceExpression': + case 'ThisExpression': + case 'UnaryExpression': + case 'UpdateExpression': + return true; + } + return false; + } - // try to strip useless frames - var fn_name = stackStartFunction.name; - var idx = out.indexOf('\n' + fn_name); - if (idx >= 0) { - // once we have located the function frame - // we need to strip out everything before it (and its line) - var next_line = out.indexOf('\n', idx + 1); - out = out.substring(next_line + 1); - } + function isIterationStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'DoWhileStatement': + case 'ForInStatement': + case 'ForStatement': + case 'WhileStatement': + return true; + } + return false; + } - this.stack = out; + function isStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'BlockStatement': + case 'BreakStatement': + case 'ContinueStatement': + case 'DebuggerStatement': + case 'DoWhileStatement': + case 'EmptyStatement': + case 'ExpressionStatement': + case 'ForInStatement': + case 'ForStatement': + case 'IfStatement': + case 'LabeledStatement': + case 'ReturnStatement': + case 'SwitchStatement': + case 'ThrowStatement': + case 'TryStatement': + case 'VariableDeclaration': + case 'WhileStatement': + case 'WithStatement': + return true; + } + return false; } - } -}; -// assert.AssertionError instanceof Error -util.inherits(assert.AssertionError, Error); + function isSourceElement(node) { + return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; + } -function replacer(key, value) { - if (util.isUndefined(value)) { - return '' + value; - } - if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { - return value.toString(); - } - if (util.isFunction(value) || util.isRegExp(value)) { - return value.toString(); - } - return value; -} + function trailingStatement(node) { + switch (node.type) { + case 'IfStatement': + if (node.alternate != null) { + return node.alternate; + } + return node.consequent; -function truncate(s, n) { - if (util.isString(s)) { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} + case 'LabeledStatement': + case 'ForStatement': + case 'ForInStatement': + case 'WhileStatement': + case 'WithStatement': + return node.body; + } + return null; + } -function getMessage(self) { - return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + - self.operator + ' ' + - truncate(JSON.stringify(self.expected, replacer), 128); -} + function isProblematicIfStatement(node) { + var current; -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. + if (node.type !== 'IfStatement') { + return false; + } + if (node.alternate == null) { + return false; + } + current = node.consequent; + do { + if (current.type === 'IfStatement') { + if (current.alternate == null) { + return true; + } + } + current = trailingStatement(current); + } while (current); -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. + return false; + } -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} + module.exports = { + isExpression: isExpression, + isStatement: isStatement, + isIterationStatement: isIterationStatement, + isSourceElement: isSourceElement, + isProblematicIfStatement: isProblematicIfStatement, -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; + trailingStatement: trailingStatement + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, !!guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/ast.js","/node_modules/esutils/lib") +},{"buffer":57,"lYpoI2":59}],46:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013-2014 Yusuke Suzuki + Copyright (C) 2014 Ivan Nikulin -function ok(value, message) { - if (!value) fail(value, true, message, '==', assert.ok); -} -assert.ok = ok; + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); +(function () { + 'use strict'; -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; + var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); + // See `tools/generate-identifier-regex.js`. + ES5Regex = { + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ + }; -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; + ES6Regex = { + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; + function isDecimalDigit(ch) { + return 0x30 <= ch && ch <= 0x39; // 0..9 + } - } else if (util.isBuffer(actual) && util.isBuffer(expected)) { - if (actual.length != expected.length) return false; + function isHexDigit(ch) { + return 0x30 <= ch && ch <= 0x39 || // 0..9 + 0x61 <= ch && ch <= 0x66 || // a..f + 0x41 <= ch && ch <= 0x46; // A..F + } - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; + function isOctalDigit(ch) { + return ch >= 0x30 && ch <= 0x37; // 0..7 } - return true; + // 7.2 White Space - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (util.isDate(actual) && util.isDate(expected)) { - return actual.getTime() === expected.getTime(); + NON_ASCII_WHITESPACES = [ + 0x1680, 0x180E, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, + 0x202F, 0x205F, + 0x3000, + 0xFEFF + ]; - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (util.isRegExp(actual) && util.isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; + function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || + ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; + } - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (!util.isObject(actual) && !util.isObject(expected)) { - return actual == expected; + // 7.3 Line Terminators - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} + function isLineTerminator(ch) { + return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; + } -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} + // 7.6 Identifier Names and Identifiers -function objEquiv(a, b) { - if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; + function fromCodePoint(cp) { + if (cp <= 0xFFFF) { return String.fromCharCode(cp); } + var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); + var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); + return cu1 + cu2; } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try { - var ka = objectKeys(a), - kb = objectKeys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key])) return false; - } - return true; -} -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); + IDENTIFIER_START = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_START[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } -}; + IDENTIFIER_PART = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_PART[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch >= 0x30 && ch <= 0x39 || // 0..9 + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); + function isIdentifierStartES5(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } -}; + function isIdentifierPartES5(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + function isIdentifierStartES6(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); - } -}; + function isIdentifierPartES6(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } + module.exports = { + isDecimalDigit: isDecimalDigit, + isHexDigit: isHexDigit, + isOctalDigit: isOctalDigit, + isWhiteSpace: isWhiteSpace, + isLineTerminator: isLineTerminator, + isIdentifierStartES5: isIdentifierStartES5, + isIdentifierPartES5: isIdentifierPartES5, + isIdentifierStartES6: isIdentifierStartES6, + isIdentifierPartES6: isIdentifierPartES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ - if (Object.prototype.toString.call(expected) == '[object RegExp]') { - return expected.test(actual); - } else if (actual instanceof expected) { - return true; - } else if (expected.call({}, actual) === true) { - return true; - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/code.js","/node_modules/esutils/lib") +},{"buffer":57,"lYpoI2":59}],47:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki - return false; -} + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: -function _throws(shouldThrow, block, expected, message) { - var actual; + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. - if (util.isString(expected)) { - message = expected; - expected = null; - } + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ - try { - block(); - } catch (e) { - actual = e; - } +(function () { + 'use strict'; - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); + var code = require('./code'); - if (shouldThrow && !actual) { - fail(actual, expected, 'Missing expected exception' + message); - } + function isStrictModeReservedWordES6(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'let': + return true; + default: + return false; + } + } - if (!shouldThrow && expectedException(actual, expected)) { - fail(actual, expected, 'Got unwanted exception' + message); - } + function isKeywordES5(id, strict) { + // yield should not be treated as keyword under non-strict mode. + if (!strict && id === 'yield') { + return false; + } + return isKeywordES6(id, strict); + } - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} + function isKeywordES6(id, strict) { + if (strict && isStrictModeReservedWordES6(id)) { + return true; + } -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; + function isReservedWordES5(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); + } -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; + function isReservedWordES6(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); + } -assert.ifError = function(err) { if (err) {throw err;}}; + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if (hasOwn.call(obj, key)) keys.push(key); - } - return keys; -}; + function isIdentifierNameES5(id) { + var i, iz, ch; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/assert.js","/node_modules/assert") -},{"FWaASH":50,"buffer":52,"util/":47}],45:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} + if (id.length === 0) { return false; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/inherits/inherits_browser.js","/node_modules/assert/node_modules/inherits") -},{"FWaASH":50,"buffer":52}],46:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/util/support/isBufferBrowser.js","/node_modules/assert/node_modules/util/support") -},{"FWaASH":50,"buffer":52}],47:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + ch = id.charCodeAt(0); + if (!code.isIdentifierStartES5(ch)) { + return false; + } -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); + for (i = 1, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (!code.isIdentifierPartES5(ch)) { + return false; + } + } + return true; } - return objects.join(' '); - } - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; + function decodeUtf16(lead, trail) { + return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + } + + function isIdentifierNameES6(id) { + var i, iz, ch, lowCh, check; + + if (id.length === 0) { return false; } + + check = code.isIdentifierStartES6; + for (i = 0, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (0xD800 <= ch && ch <= 0xDBFF) { + ++i; + if (i >= iz) { return false; } + lowCh = id.charCodeAt(i); + if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { + return false; + } + ch = decodeUtf16(ch, lowCh); + } + if (!check(ch)) { + return false; + } + check = code.isIdentifierPartES6; } - default: - return x; + return true; } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); + + function isIdentifierES5(id, strict) { + return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); } - } - return str; -}; + function isIdentifierES6(id, strict) { + return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); + } -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); + module.exports = { + isKeywordES5: isKeywordES5, + isKeywordES6: isKeywordES6, + isReservedWordES5: isReservedWordES5, + isReservedWordES6: isReservedWordES6, + isRestrictedWord: isRestrictedWord, + isIdentifierNameES5: isIdentifierNameES5, + isIdentifierNameES6: isIdentifierNameES6, + isIdentifierES5: isIdentifierES5, + isIdentifierES6: isIdentifierES6 }; - } +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ - if (process.noDeprecation === true) { - return fn; - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/keyword.js","/node_modules/esutils/lib") +},{"./code":46,"buffer":57,"lYpoI2":59}],48:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* + Copyright (C) 2013 Yusuke Suzuki - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - return deprecated; -}; + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; +(function () { + 'use strict'; -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; + exports.ast = require('./ast'); + exports.code = require('./code'); + exports.keyword = require('./keyword'); +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/utils.js","/node_modules/esutils/lib") +},{"./ast":45,"./code":46,"./keyword":47,"buffer":57,"lYpoI2":59}],49:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; +// do not edit .js files directly - edit src/index.jst -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; +module.exports = function equal(a, b) { + if (a === b) return true; - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } -function stylizeNoColor(str, styleType) { - return str; -} -function arrayToHash(array) { - var hash = {}; + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - array.forEach(function(val, idx) { - hash[val] = true; - }); + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; - return hash; -} + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + for (i = length; i-- !== 0;) { + var key = keys[i]; -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); + if (!equal(a[key], b[key])) return false; } - return ret; - } - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; + return true; } - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); + // true if both NaN, false otherwise + return a!==a && b!==b; +}; - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-deep-equal/index.js","/node_modules/fast-deep-equal") +},{"buffer":57,"lYpoI2":59}],50:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } +module.exports = function (data, opts) { + if (!opts) opts = {}; + if (typeof opts === 'function') opts = { cmp: opts }; + var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } + var cmp = opts.cmp && (function (f) { + return function (node) { + return function (a, b) { + var aobj = { key: a, value: node[a] }; + var bobj = { key: b, value: node[b] }; + return f(aobj, bobj); + }; + }; + })(opts.cmp); - var base = '', array = false, braces = ['{', '}']; + var seen = []; + return (function stringify (node) { + if (node && node.toJSON && typeof node.toJSON === 'function') { + node = node.toJSON(); + } - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } + if (node === undefined) return; + if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; + if (typeof node !== 'object') return JSON.stringify(node); - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } + var i, out; + if (Array.isArray(node)) { + out = '['; + for (i = 0; i < node.length; i++) { + if (i) out += ','; + out += stringify(node[i]) || 'null'; + } + return out + ']'; + } - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } + if (node === null) return 'null'; - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } + if (seen.indexOf(node) !== -1) { + if (cycles) return JSON.stringify('__cycle__'); + throw new TypeError('Converting circular structure to JSON'); + } - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } + var seenIndex = seen.push(node) - 1; + var keys = Object.keys(node).sort(cmp && cmp(node)); + out = ''; + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = stringify(node[key]); - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } + if (!value) continue; + if (out) out += ','; + out += JSON.stringify(key) + ':' + value; + } + seen.splice(seenIndex, 1); + return '{' + out + '}'; + })(data); +}; - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-json-stable-stringify/index.js","/node_modules/fast-json-stable-stringify") +},{"buffer":57,"lYpoI2":59}],51:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ctx.seen.push(value); +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; - ctx.seen.pop(); +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. - return reduceToSingleString(output, base, braces); -} +var assert = module.exports = ok; +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - + var stackStartFunction = options.stackStartFunction || fail; -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); + this.stack = out; } } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} +}; +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } + if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { + return value.toString(); } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); } - - return name + ': ' + str; + return value; } - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; } +} - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); } +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. -function isBoolean(arg) { - return typeof arg === 'boolean'; +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); } -exports.isBoolean = isBoolean; -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. -function isNumber(arg) { - return typeof arg === 'number'; +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); } -exports.isNumber = isNumber; +assert.ok = ok; -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } -exports.isBuffer = require('./support/isBuffer'); + return true; -function objectToString(o) { - return Object.prototype.toString.call(o); -} + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } } +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + try { + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; } +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } }; +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); } - return origin; }; -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/assert/node_modules/util/util.js","/node_modules/assert/node_modules/util") -},{"./support/isBuffer":46,"FWaASH":50,"buffer":52,"inherits":45}],48:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - var PLUS_URL_SAFE = '-'.charCodeAt(0) - var SLASH_URL_SAFE = '_'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS || - code === PLUS_URL_SAFE) - return 62 // '+' - if (code === SLASH || - code === SLASH_URL_SAFE) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } - var L = 0 + return false; +} - function push (v) { - arr[L++] = v - } +function _throws(shouldThrow, block, expected, message) { + var actual; - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } + if (util.isString(expected)) { + message = expected; + expected = null; + } - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } + try { + block(); + } catch (e) { + actual = e; + } - return arr - } + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } - function encode (num) { - return lookup.charAt(num) - } + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; - return output - } +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) +assert.ifError = function(err) { if (err) {throw err;}}; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/base64-js/lib/b64.js","/node_modules/base64-js/lib") -},{"FWaASH":50,"buffer":52}],49:[function(require,module,exports){ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; -},{"FWaASH":50,"buffer":52}],50:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/assert.js","/node_modules/gulp-browserify/node_modules/assert") +},{"buffer":57,"lYpoI2":59,"util/":54}],52:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// shim for using process in browser - -var process = module.exports = {}; - -process.nextTick = (function () { - var canSetImmediate = typeof window !== 'undefined' - && window.setImmediate; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canSetImmediate) { - return function (f) { return window.setImmediate(f) }; - } - - if (canPost) { - var queue = []; - window.addEventListener('message', function (ev) { - var source = ev.source; - if ((source === window || source === null) && ev.data === 'process-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - - return function nextTick(fn) { - queue.push(fn); - window.postMessage('process-tick', '*'); - }; - } - - return function nextTick(fn) { - setTimeout(fn, 0); - }; -})(); - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } -// TODO(shtylman) -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/browserify/node_modules/process/browser.js","/node_modules/browserify/node_modules/process") -},{"FWaASH":50,"buffer":52}],51:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/inherits/inherits_browser.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/inherits") +},{"buffer":57,"lYpoI2":59}],53:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/util/support/isBufferBrowser.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/util/support") +},{"buffer":57,"lYpoI2":59}],54:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ // Copyright Joyent, Inc. and other Node contributors. // @@ -6876,50746 +6892,49001 @@ process.chdir = function (dir) { // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. -var Buffer = require('buffer').Buffer; - -function assertEncoding(encoding) { - if (encoding && !Buffer.isEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); } -} -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; + return str; }; -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; } - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; + if (process.noDeprecation === true) { + return fn; } - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); } - // or just emit the charStr - return charStr; + return deprecated; }; -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; } + } + return debugs[set]; +}; - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; - return i; + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] }; -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - return res; -}; +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } } -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; +function stylizeNoColor(str, styleType) { + return str; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/browserify/node_modules/string_decoder/index.js","/node_modules/browserify/node_modules/string_decoder") -},{"FWaASH":50,"buffer":52}],52:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -exports.Buffer = Buffer -exports.SlowBuffer = Buffer -exports.INSPECT_MAX_BYTES = 50 -Buffer.poolSize = 8192 +function arrayToHash(array) { + var hash = {}; -/** - * If `Buffer._useTypedArrays`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (compatible down to IE6) - */ -Buffer._useTypedArrays = (function () { - // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, - // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding - // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support - // because we need to be able to add all the node Buffer API methods. This is an issue - // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 - try { - var buf = new ArrayBuffer(0) - var arr = new Uint8Array(buf) - arr.foo = function () { return 42 } - return 42 === arr.foo() && - typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` - } catch (e) { - return false - } -})() + array.forEach(function(val, idx) { + hash[val] = true; + }); -/** - * Class: Buffer - * ============= - * - * The Buffer constructor returns instances of `Uint8Array` that are augmented - * with function properties for all the node `Buffer` API functions. We use - * `Uint8Array` so that square bracket notation works as expected -- it returns - * a single octet. - * - * By augmenting the instances, we can avoid modifying the `Uint8Array` - * prototype. - */ -function Buffer (subject, encoding, noZero) { - if (!(this instanceof Buffer)) - return new Buffer(subject, encoding, noZero) + return hash; +} - var type = typeof subject - // Workaround: node's base64 implementation allows for non-padded strings - // while base64-js does not. - if (encoding === 'base64' && type === 'string') { - subject = stringtrim(subject) - while (subject.length % 4 !== 0) { - subject = subject + '=' +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); } + return ret; } - // Find the length - var length - if (type === 'number') - length = coerce(subject) - else if (type === 'string') - length = Buffer.byteLength(subject, encoding) - else if (type === 'object') - length = coerce(subject.length) // assume that object is array-like - else - throw new Error('First argument needs to be a number, array or string.') + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } - var buf - if (Buffer._useTypedArrays) { - // Preferred: Return an augmented `Uint8Array` instance for best performance - buf = Buffer._augment(new Uint8Array(length)) - } else { - // Fallback: Return THIS instance of Buffer (created by `new`) - buf = this - buf.length = length - buf._isBuffer = true + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); } - var i - if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { - // Speed optimization -- use set if we're copying from a typed array - buf._set(subject) - } else if (isArrayish(subject)) { - // Treat array-ish objects as a byte array - for (i = 0; i < length; i++) { - if (Buffer.isBuffer(subject)) - buf[i] = subject.readUInt8(i) - else - buf[i] = subject[i] + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); } - } else if (type === 'string') { - buf.write(subject, 0, encoding) - } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { - for (i = 0; i < length; i++) { - buf[i] = 0 + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); } } - return buf -} - -// STATIC METHODS -// ============== + var base = '', array = false, braces = ['{', '}']; -Buffer.isEncoding = function (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'raw': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; } -} - -Buffer.isBuffer = function (b) { - return !!(b !== null && b !== undefined && b._isBuffer) -} -Buffer.byteLength = function (str, encoding) { - var ret - str = str + '' - switch (encoding || 'utf8') { - case 'hex': - ret = str.length / 2 - break - case 'utf8': - case 'utf-8': - ret = utf8ToBytes(str).length - break - case 'ascii': - case 'binary': - case 'raw': - ret = str.length - break - case 'base64': - ret = base64ToBytes(str).length - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = str.length * 2 - break - default: - throw new Error('Unknown encoding') + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; } - return ret -} - -Buffer.concat = function (list, totalLength) { - assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + - 'list should be an Array.') - if (list.length === 0) { - return new Buffer(0) - } else if (list.length === 1) { - return list[0] + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); } - var i - if (typeof totalLength !== 'number') { - totalLength = 0 - for (i = 0; i < list.length; i++) { - totalLength += list[i].length - } + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); } - var buf = new Buffer(totalLength) - var pos = 0 - for (i = 0; i < list.length; i++) { - var item = list[i] - item.copy(buf, pos) - pos += item.length + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); } - return buf -} -// BUFFER INSTANCE METHODS -// ======================= + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } -function _hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); } } - // must be an even number of digits - var strLen = string.length - assert(strLen % 2 === 0, 'Invalid hex string') + ctx.seen.push(value); - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; i++) { - var byte = parseInt(string.substr(i * 2, 2), 16) - assert(!isNaN(byte), 'Invalid hex string') - buf[offset + i] = byte + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); } - Buffer._charsWritten = i * 2 - return i -} -function _utf8Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf8ToBytes(string), buf, offset, length) - return charsWritten -} + ctx.seen.pop(); -function _asciiWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(asciiToBytes(string), buf, offset, length) - return charsWritten + return reduceToSingleString(output, base, braces); } -function _binaryWrite (buf, string, offset, length) { - return _asciiWrite(buf, string, offset, length) -} -function _base64Write (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(base64ToBytes(string), buf, offset, length) - return charsWritten +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); } -function _utf16leWrite (buf, string, offset, length) { - var charsWritten = Buffer._charsWritten = - blitBuffer(utf16leToBytes(string), buf, offset, length) - return charsWritten + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; } -Buffer.prototype.write = function (string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length - length = undefined + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); } - } else { // legacy - var swap = encoding - encoding = offset - offset = length - length = swap } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} - offset = Number(offset) || 0 - var remaining = this.length - offset - if (!length) { - length = remaining + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } } else { - length = Number(length) - if (length > remaining) { - length = remaining + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); } } - encoding = String(encoding || 'utf8').toLowerCase() - - var ret - switch (encoding) { - case 'hex': - ret = _hexWrite(this, string, offset, length) - break - case 'utf8': - case 'utf-8': - ret = _utf8Write(this, string, offset, length) - break - case 'ascii': - ret = _asciiWrite(this, string, offset, length) - break - case 'binary': - ret = _binaryWrite(this, string, offset, length) - break - case 'base64': - ret = _base64Write(this, string, offset, length) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leWrite(this, string, offset, length) - break - default: - throw new Error('Unknown encoding') + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; } - return ret -} - -Buffer.prototype.toString = function (encoding, start, end) { - var self = this - - encoding = String(encoding || 'utf8').toLowerCase() - start = Number(start) || 0 - end = (end !== undefined) - ? Number(end) - : end = self.length - - // Fastpath empty strings - if (end === start) - return '' - - var ret - switch (encoding) { - case 'hex': - ret = _hexSlice(self, start, end) - break - case 'utf8': - case 'utf-8': - ret = _utf8Slice(self, start, end) - break - case 'ascii': - ret = _asciiSlice(self, start, end) - break - case 'binary': - ret = _binarySlice(self, start, end) - break - case 'base64': - ret = _base64Slice(self, start, end) - break - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - ret = _utf16leSlice(self, start, end) - break - default: - throw new Error('Unknown encoding') + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } } - return ret -} - -Buffer.prototype.toJSON = function () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } } -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function (target, target_start, start, end) { - var source = this - - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (!target_start) target_start = 0 - - // Copy 0 bytes; we're done - if (end === start) return - if (target.length === 0 || source.length === 0) return - - // Fatal error conditions - assert(end >= start, 'sourceEnd < sourceStart') - assert(target_start >= 0 && target_start < target.length, - 'targetStart out of bounds') - assert(start >= 0 && start < source.length, 'sourceStart out of bounds') - assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') - // Are we oob? - if (end > this.length) - end = this.length - if (target.length - target_start < end - start) - end = target.length - target_start + start - - var len = end - start - - if (len < 100 || !Buffer._useTypedArrays) { - for (var i = 0; i < len; i++) - target[i + target_start] = this[i + start] - } else { - target._set(this.subarray(start, start + len), target_start) - } + return name + ': ' + str; } -function _base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} -function _utf8Slice (buf, start, end) { - var res = '' - var tmp = '' - end = Math.min(buf.length, end) +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); - for (var i = start; i < end; i++) { - if (buf[i] <= 0x7F) { - res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) - tmp = '' - } else { - tmp += '%' + buf[i].toString(16) - } + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; } - return res + decodeUtf8Char(tmp) + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; } -function _asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - for (var i = start; i < end; i++) - ret += String.fromCharCode(buf[i]) - return ret +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); } +exports.isArray = isArray; -function _binarySlice (buf, start, end) { - return _asciiSlice(buf, start, end) +function isBoolean(arg) { + return typeof arg === 'boolean'; } +exports.isBoolean = isBoolean; -function _hexSlice (buf, start, end) { - var len = buf.length +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; - var out = '' - for (var i = start; i < end; i++) { - out += toHex(buf[i]) - } - return out +function isNumber(arg) { + return typeof arg === 'number'; } +exports.isNumber = isNumber; -function _utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) - } - return res +function isString(arg) { + return typeof arg === 'string'; } +exports.isString = isString; -Buffer.prototype.slice = function (start, end) { - var len = this.length - start = clamp(start, len, 0) - end = clamp(end, len, len) +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; - if (Buffer._useTypedArrays) { - return Buffer._augment(this.subarray(start, end)) - } else { - var sliceLen = end - start - var newBuf = new Buffer(sliceLen, undefined, true) - for (var i = 0; i < sliceLen; i++) { - newBuf[i] = this[i + start] - } - return newBuf - } +function isUndefined(arg) { + return arg === void 0; } +exports.isUndefined = isUndefined; -// `get` will be removed in Node 0.13+ -Buffer.prototype.get = function (offset) { - console.log('.get() is deprecated. Access using array indexes instead.') - return this.readUInt8(offset) +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; } +exports.isRegExp = isRegExp; -// `set` will be removed in Node 0.13+ -Buffer.prototype.set = function (v, offset) { - console.log('.set() is deprecated. Access using array indexes instead.') - return this.writeUInt8(v, offset) +function isObject(arg) { + return typeof arg === 'object' && arg !== null; } +exports.isObject = isObject; -Buffer.prototype.readUInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') - } +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; - if (offset >= this.length) - return +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; - return this[offset] +function isFunction(arg) { + return typeof arg === 'function'; } +exports.isFunction = isFunction; -function _readUInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') - } +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; - var len = buf.length - if (offset >= len) - return +exports.isBuffer = require('./support/isBuffer'); - var val - if (littleEndian) { - val = buf[offset] - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - } else { - val = buf[offset] << 8 - if (offset + 1 < len) - val |= buf[offset + 1] - } - return val +function objectToString(o) { + return Object.prototype.toString.call(o); } -Buffer.prototype.readUInt16LE = function (offset, noAssert) { - return _readUInt16(this, offset, true, noAssert) -} -Buffer.prototype.readUInt16BE = function (offset, noAssert) { - return _readUInt16(this, offset, false, noAssert) +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); } -function _readUInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } - var len = buf.length - if (offset >= len) - return +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; - var val - if (littleEndian) { - if (offset + 2 < len) - val = buf[offset + 2] << 16 - if (offset + 1 < len) - val |= buf[offset + 1] << 8 - val |= buf[offset] - if (offset + 3 < len) - val = val + (buf[offset + 3] << 24 >>> 0) - } else { - if (offset + 1 < len) - val = buf[offset + 1] << 16 - if (offset + 2 < len) - val |= buf[offset + 2] << 8 - if (offset + 3 < len) - val |= buf[offset + 3] - val = val + (buf[offset] << 24 >>> 0) - } - return val +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); } -Buffer.prototype.readUInt32LE = function (offset, noAssert) { - return _readUInt32(this, offset, true, noAssert) -} -Buffer.prototype.readUInt32BE = function (offset, noAssert) { - return _readUInt32(this, offset, false, noAssert) -} +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; -Buffer.prototype.readInt8 = function (offset, noAssert) { - if (!noAssert) { - assert(offset !== undefined && offset !== null, - 'missing offset') - assert(offset < this.length, 'Trying to read beyond buffer length') - } - if (offset >= this.length) - return +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); - var neg = this[offset] & 0x80 - if (neg) - return (0xff - this[offset] + 1) * -1 - else - return this[offset] -} +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; -function _readInt16 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; } + return origin; +}; - var len = buf.length - if (offset >= len) - return - - var val = _readUInt16(buf, offset, littleEndian, true) - var neg = val & 0x8000 - if (neg) - return (0xffff - val + 1) * -1 - else - return val +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); } -Buffer.prototype.readInt16LE = function (offset, noAssert) { - return _readInt16(this, offset, true, noAssert) -} +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/assert/node_modules/util/util.js","/node_modules/gulp-browserify/node_modules/assert/node_modules/util") +},{"./support/isBuffer":53,"buffer":57,"inherits":52,"lYpoI2":59}],55:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; -Buffer.prototype.readInt16BE = function (offset, noAssert) { - return _readInt16(this, offset, false, noAssert) -} +;(function (exports) { + 'use strict'; -function _readInt32 (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } + var Arr = (typeof Uint8Array !== 'undefined') + ? Uint8Array + : Array - var len = buf.length - if (offset >= len) - return + var PLUS = '+'.charCodeAt(0) + var SLASH = '/'.charCodeAt(0) + var NUMBER = '0'.charCodeAt(0) + var LOWER = 'a'.charCodeAt(0) + var UPPER = 'A'.charCodeAt(0) + var PLUS_URL_SAFE = '-'.charCodeAt(0) + var SLASH_URL_SAFE = '_'.charCodeAt(0) - var val = _readUInt32(buf, offset, littleEndian, true) - var neg = val & 0x80000000 - if (neg) - return (0xffffffff - val + 1) * -1 - else - return val -} + function decode (elt) { + var code = elt.charCodeAt(0) + if (code === PLUS || + code === PLUS_URL_SAFE) + return 62 // '+' + if (code === SLASH || + code === SLASH_URL_SAFE) + return 63 // '/' + if (code < NUMBER) + return -1 //no match + if (code < NUMBER + 10) + return code - NUMBER + 26 + 26 + if (code < UPPER + 26) + return code - UPPER + if (code < LOWER + 26) + return code - LOWER + 26 + } -Buffer.prototype.readInt32LE = function (offset, noAssert) { - return _readInt32(this, offset, true, noAssert) -} + function b64ToByteArray (b64) { + var i, j, l, tmp, placeHolders, arr -Buffer.prototype.readInt32BE = function (offset, noAssert) { - return _readInt32(this, offset, false, noAssert) -} + if (b64.length % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } -function _readFloat (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') - } + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + var len = b64.length + placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - return ieee754.read(buf, offset, littleEndian, 23, 4) -} + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(b64.length * 3 / 4 - placeHolders) -Buffer.prototype.readFloatLE = function (offset, noAssert) { - return _readFloat(this, offset, true, noAssert) -} + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? b64.length - 4 : b64.length -Buffer.prototype.readFloatBE = function (offset, noAssert) { - return _readFloat(this, offset, false, noAssert) -} + var L = 0 -function _readDouble (buf, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') - } + function push (v) { + arr[L++] = v + } - return ieee754.read(buf, offset, littleEndian, 52, 8) -} + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) + push((tmp & 0xFF0000) >> 16) + push((tmp & 0xFF00) >> 8) + push(tmp & 0xFF) + } -Buffer.prototype.readDoubleLE = function (offset, noAssert) { - return _readDouble(this, offset, true, noAssert) -} + if (placeHolders === 2) { + tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) + push(tmp & 0xFF) + } else if (placeHolders === 1) { + tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) + push((tmp >> 8) & 0xFF) + push(tmp & 0xFF) + } -Buffer.prototype.readDoubleBE = function (offset, noAssert) { - return _readDouble(this, offset, false, noAssert) -} + return arr + } -Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'trying to write beyond buffer length') - verifuint(value, 0xff) - } + function uint8ToBase64 (uint8) { + var i, + extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes + output = "", + temp, length - if (offset >= this.length) return + function encode (num) { + return lookup.charAt(num) + } - this[offset] = value -} + function tripletToBase64 (num) { + return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) + } -function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffff) - } + // go through the array every three bytes, we'll deal with trailing stuff later + for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { + temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output += tripletToBase64(temp) + } - var len = buf.length - if (offset >= len) - return + // pad the end with zeros, but make sure to not forget the extra bytes + switch (extraBytes) { + case 1: + temp = uint8[uint8.length - 1] + output += encode(temp >> 2) + output += encode((temp << 4) & 0x3F) + output += '==' + break + case 2: + temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) + output += encode(temp >> 10) + output += encode((temp >> 4) & 0x3F) + output += encode((temp << 2) & 0x3F) + output += '=' + break + } - for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { - buf[offset + i] = - (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} + return output + } -Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, true, noAssert) -} + exports.toByteArray = b64ToByteArray + exports.fromByteArray = uint8ToBase64 +}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) -Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { - _writeUInt16(this, value, offset, false, noAssert) -} +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js","/node_modules/gulp-browserify/node_modules/base64-js/lib") +},{"buffer":57,"lYpoI2":59}],56:[function(require,module,exports){ -function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'trying to write beyond buffer length') - verifuint(value, 0xffffffff) - } +},{"buffer":57,"lYpoI2":59}],57:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ - var len = buf.length - if (offset >= len) - return +var base64 = require('base64-js') +var ieee754 = require('ieee754') - for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { - buf[offset + i] = - (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff +exports.Buffer = Buffer +exports.SlowBuffer = Buffer +exports.INSPECT_MAX_BYTES = 50 +Buffer.poolSize = 8192 + +/** + * If `Buffer._useTypedArrays`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (compatible down to IE6) + */ +Buffer._useTypedArrays = (function () { + // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, + // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding + // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support + // because we need to be able to add all the node Buffer API methods. This is an issue + // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 + try { + var buf = new ArrayBuffer(0) + var arr = new Uint8Array(buf) + arr.foo = function () { return 42 } + return 42 === arr.foo() && + typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` + } catch (e) { + return false } -} +})() -Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, true, noAssert) -} +/** + * Class: Buffer + * ============= + * + * The Buffer constructor returns instances of `Uint8Array` that are augmented + * with function properties for all the node `Buffer` API functions. We use + * `Uint8Array` so that square bracket notation works as expected -- it returns + * a single octet. + * + * By augmenting the instances, we can avoid modifying the `Uint8Array` + * prototype. + */ +function Buffer (subject, encoding, noZero) { + if (!(this instanceof Buffer)) + return new Buffer(subject, encoding, noZero) -Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { - _writeUInt32(this, value, offset, false, noAssert) -} + var type = typeof subject -Buffer.prototype.writeInt8 = function (value, offset, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset < this.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7f, -0x80) + // Workaround: node's base64 implementation allows for non-padded strings + // while base64-js does not. + if (encoding === 'base64' && type === 'string') { + subject = stringtrim(subject) + while (subject.length % 4 !== 0) { + subject = subject + '=' + } } - if (offset >= this.length) - return - - if (value >= 0) - this.writeUInt8(value, offset, noAssert) + // Find the length + var length + if (type === 'number') + length = coerce(subject) + else if (type === 'string') + length = Buffer.byteLength(subject, encoding) + else if (type === 'object') + length = coerce(subject.length) // assume that object is array-like else - this.writeUInt8(0xff + value + 1, offset, noAssert) -} + throw new Error('First argument needs to be a number, array or string.') -function _writeInt16 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fff, -0x8000) + var buf + if (Buffer._useTypedArrays) { + // Preferred: Return an augmented `Uint8Array` instance for best performance + buf = Buffer._augment(new Uint8Array(length)) + } else { + // Fallback: Return THIS instance of Buffer (created by `new`) + buf = this + buf.length = length + buf._isBuffer = true } - var len = buf.length - if (offset >= len) - return - - if (value >= 0) - _writeUInt16(buf, value, offset, littleEndian, noAssert) - else - _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) -} + var i + if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { + // Speed optimization -- use set if we're copying from a typed array + buf._set(subject) + } else if (isArrayish(subject)) { + // Treat array-ish objects as a byte array + for (i = 0; i < length; i++) { + if (Buffer.isBuffer(subject)) + buf[i] = subject.readUInt8(i) + else + buf[i] = subject[i] + } + } else if (type === 'string') { + buf.write(subject, 0, encoding) + } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { + for (i = 0; i < length; i++) { + buf[i] = 0 + } + } -Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, true, noAssert) + return buf } -Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { - _writeInt16(this, value, offset, false, noAssert) -} +// STATIC METHODS +// ============== -function _writeInt32 (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifsint(value, 0x7fffffff, -0x80000000) +Buffer.isEncoding = function (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'binary': + case 'base64': + case 'raw': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false } - - var len = buf.length - if (offset >= len) - return - - if (value >= 0) - _writeUInt32(buf, value, offset, littleEndian, noAssert) - else - _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) } -Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, true, noAssert) +Buffer.isBuffer = function (b) { + return !!(b !== null && b !== undefined && b._isBuffer) } -Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { - _writeInt32(this, value, offset, false, noAssert) +Buffer.byteLength = function (str, encoding) { + var ret + str = str + '' + switch (encoding || 'utf8') { + case 'hex': + ret = str.length / 2 + break + case 'utf8': + case 'utf-8': + ret = utf8ToBytes(str).length + break + case 'ascii': + case 'binary': + case 'raw': + ret = str.length + break + case 'base64': + ret = base64ToBytes(str).length + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = str.length * 2 + break + default: + throw new Error('Unknown encoding') + } + return ret } -function _writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') - verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) - } +Buffer.concat = function (list, totalLength) { + assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + + 'list should be an Array.') - var len = buf.length - if (offset >= len) - return + if (list.length === 0) { + return new Buffer(0) + } else if (list.length === 1) { + return list[0] + } - ieee754.write(buf, value, offset, littleEndian, 23, 4) -} + var i + if (typeof totalLength !== 'number') { + totalLength = 0 + for (i = 0; i < list.length; i++) { + totalLength += list[i].length + } + } -Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, true, noAssert) + var buf = new Buffer(totalLength) + var pos = 0 + for (i = 0; i < list.length; i++) { + var item = list[i] + item.copy(buf, pos) + pos += item.length + } + return buf } -Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { - _writeFloat(this, value, offset, false, noAssert) -} +// BUFFER INSTANCE METHODS +// ======================= -function _writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - assert(value !== undefined && value !== null, 'missing value') - assert(typeof littleEndian === 'boolean', 'missing or invalid endian') - assert(offset !== undefined && offset !== null, 'missing offset') - assert(offset + 7 < buf.length, - 'Trying to write beyond buffer length') - verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) +function _hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } } - var len = buf.length - if (offset >= len) - return + // must be an even number of digits + var strLen = string.length + assert(strLen % 2 === 0, 'Invalid hex string') - ieee754.write(buf, value, offset, littleEndian, 52, 8) + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; i++) { + var byte = parseInt(string.substr(i * 2, 2), 16) + assert(!isNaN(byte), 'Invalid hex string') + buf[offset + i] = byte + } + Buffer._charsWritten = i * 2 + return i } -Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, true, noAssert) +function _utf8Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf8ToBytes(string), buf, offset, length) + return charsWritten } -Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { - _writeDouble(this, value, offset, false, noAssert) +function _asciiWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(asciiToBytes(string), buf, offset, length) + return charsWritten } -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function (value, start, end) { - if (!value) value = 0 - if (!start) start = 0 - if (!end) end = this.length +function _binaryWrite (buf, string, offset, length) { + return _asciiWrite(buf, string, offset, length) +} - if (typeof value === 'string') { - value = value.charCodeAt(0) - } +function _base64Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(base64ToBytes(string), buf, offset, length) + return charsWritten +} - assert(typeof value === 'number' && !isNaN(value), 'value is not a number') - assert(end >= start, 'end < start') +function _utf16leWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf16leToBytes(string), buf, offset, length) + return charsWritten +} - // Fill 0 bytes; we're done - if (end === start) return - if (this.length === 0) return +Buffer.prototype.write = function (string, offset, length, encoding) { + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length + length = undefined + } + } else { // legacy + var swap = encoding + encoding = offset + offset = length + length = swap + } - assert(start >= 0 && start < this.length, 'start out of bounds') - assert(end >= 0 && end <= this.length, 'end out of bounds') + offset = Number(offset) || 0 + var remaining = this.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + encoding = String(encoding || 'utf8').toLowerCase() - for (var i = start; i < end; i++) { - this[i] = value + var ret + switch (encoding) { + case 'hex': + ret = _hexWrite(this, string, offset, length) + break + case 'utf8': + case 'utf-8': + ret = _utf8Write(this, string, offset, length) + break + case 'ascii': + ret = _asciiWrite(this, string, offset, length) + break + case 'binary': + ret = _binaryWrite(this, string, offset, length) + break + case 'base64': + ret = _base64Write(this, string, offset, length) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leWrite(this, string, offset, length) + break + default: + throw new Error('Unknown encoding') } + return ret } -Buffer.prototype.inspect = function () { - var out = [] - var len = this.length - for (var i = 0; i < len; i++) { - out[i] = toHex(this[i]) - if (i === exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...' +Buffer.prototype.toString = function (encoding, start, end) { + var self = this + + encoding = String(encoding || 'utf8').toLowerCase() + start = Number(start) || 0 + end = (end !== undefined) + ? Number(end) + : end = self.length + + // Fastpath empty strings + if (end === start) + return '' + + var ret + switch (encoding) { + case 'hex': + ret = _hexSlice(self, start, end) break - } + case 'utf8': + case 'utf-8': + ret = _utf8Slice(self, start, end) + break + case 'ascii': + ret = _asciiSlice(self, start, end) + break + case 'binary': + ret = _binarySlice(self, start, end) + break + case 'base64': + ret = _base64Slice(self, start, end) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leSlice(self, start, end) + break + default: + throw new Error('Unknown encoding') } - return '' + return ret } -/** - * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. - * Added in Node 0.12. Only available in browsers that support ArrayBuffer. - */ -Buffer.prototype.toArrayBuffer = function () { - if (typeof Uint8Array !== 'undefined') { - if (Buffer._useTypedArrays) { - return (new Buffer(this)).buffer - } else { - var buf = new Uint8Array(this.length) - for (var i = 0, len = buf.length; i < len; i += 1) - buf[i] = this[i] - return buf.buffer - } - } else { - throw new Error('Buffer.toArrayBuffer not supported in this browser') +Buffer.prototype.toJSON = function () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) } } -// HELPER FUNCTIONS -// ================ +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function (target, target_start, start, end) { + var source = this -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (!target_start) target_start = 0 -var BP = Buffer.prototype + // Copy 0 bytes; we're done + if (end === start) return + if (target.length === 0 || source.length === 0) return -/** - * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods - */ -Buffer._augment = function (arr) { - arr._isBuffer = true + // Fatal error conditions + assert(end >= start, 'sourceEnd < sourceStart') + assert(target_start >= 0 && target_start < target.length, + 'targetStart out of bounds') + assert(start >= 0 && start < source.length, 'sourceStart out of bounds') + assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') - // save reference to original Uint8Array get/set methods before overwriting - arr._get = arr.get - arr._set = arr.set + // Are we oob? + if (end > this.length) + end = this.length + if (target.length - target_start < end - start) + end = target.length - target_start + start - // deprecated, will be removed in node 0.13+ - arr.get = BP.get - arr.set = BP.set + var len = end - start - arr.write = BP.write - arr.toString = BP.toString - arr.toLocaleString = BP.toString - arr.toJSON = BP.toJSON - arr.copy = BP.copy - arr.slice = BP.slice - arr.readUInt8 = BP.readUInt8 - arr.readUInt16LE = BP.readUInt16LE - arr.readUInt16BE = BP.readUInt16BE - arr.readUInt32LE = BP.readUInt32LE - arr.readUInt32BE = BP.readUInt32BE - arr.readInt8 = BP.readInt8 - arr.readInt16LE = BP.readInt16LE - arr.readInt16BE = BP.readInt16BE - arr.readInt32LE = BP.readInt32LE - arr.readInt32BE = BP.readInt32BE - arr.readFloatLE = BP.readFloatLE - arr.readFloatBE = BP.readFloatBE - arr.readDoubleLE = BP.readDoubleLE - arr.readDoubleBE = BP.readDoubleBE - arr.writeUInt8 = BP.writeUInt8 - arr.writeUInt16LE = BP.writeUInt16LE - arr.writeUInt16BE = BP.writeUInt16BE - arr.writeUInt32LE = BP.writeUInt32LE - arr.writeUInt32BE = BP.writeUInt32BE - arr.writeInt8 = BP.writeInt8 - arr.writeInt16LE = BP.writeInt16LE - arr.writeInt16BE = BP.writeInt16BE - arr.writeInt32LE = BP.writeInt32LE - arr.writeInt32BE = BP.writeInt32BE - arr.writeFloatLE = BP.writeFloatLE - arr.writeFloatBE = BP.writeFloatBE - arr.writeDoubleLE = BP.writeDoubleLE - arr.writeDoubleBE = BP.writeDoubleBE - arr.fill = BP.fill - arr.inspect = BP.inspect - arr.toArrayBuffer = BP.toArrayBuffer + if (len < 100 || !Buffer._useTypedArrays) { + for (var i = 0; i < len; i++) + target[i + target_start] = this[i + start] + } else { + target._set(this.subarray(start, start + len), target_start) + } +} - return arr +function _base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } } -// slice(start, end) -function clamp (index, len, defaultValue) { - if (typeof index !== 'number') return defaultValue - index = ~~index; // Coerce to integer. - if (index >= len) return len - if (index >= 0) return index - index += len - if (index >= 0) return index - return 0 +function _utf8Slice (buf, start, end) { + var res = '' + var tmp = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + if (buf[i] <= 0x7F) { + res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) + tmp = '' + } else { + tmp += '%' + buf[i].toString(16) + } + } + + return res + decodeUtf8Char(tmp) } -function coerce (length) { - // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length) - return length < 0 ? 0 : length +function _asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) + ret += String.fromCharCode(buf[i]) + return ret } -function isArray (subject) { - return (Array.isArray || function (subject) { - return Object.prototype.toString.call(subject) === '[object Array]' - })(subject) +function _binarySlice (buf, start, end) { + return _asciiSlice(buf, start, end) } -function isArrayish (subject) { - return isArray(subject) || Buffer.isBuffer(subject) || - subject && typeof subject === 'object' && - typeof subject.length === 'number' +function _hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; i++) { + out += toHex(buf[i]) + } + return out } -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) +function _utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) + } + return res } -function utf8ToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - var b = str.charCodeAt(i) - if (b <= 0x7F) - byteArray.push(str.charCodeAt(i)) - else { - var start = i - if (b >= 0xD800 && b <= 0xDFFF) i++ - var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') - for (var j = 0; j < h.length; j++) - byteArray.push(parseInt(h[j], 16)) +Buffer.prototype.slice = function (start, end) { + var len = this.length + start = clamp(start, len, 0) + end = clamp(end, len, len) + + if (Buffer._useTypedArrays) { + return Buffer._augment(this.subarray(start, end)) + } else { + var sliceLen = end - start + var newBuf = new Buffer(sliceLen, undefined, true) + for (var i = 0; i < sliceLen; i++) { + newBuf[i] = this[i + start] } + return newBuf } - return byteArray } -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) +// `get` will be removed in Node 0.13+ +Buffer.prototype.get = function (offset) { + console.log('.get() is deprecated. Access using array indexes instead.') + return this.readUInt8(offset) +} + +// `set` will be removed in Node 0.13+ +Buffer.prototype.set = function (v, offset) { + console.log('.set() is deprecated. Access using array indexes instead.') + return this.writeUInt8(v, offset) +} + +Buffer.prototype.readUInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') } - return byteArray + + if (offset >= this.length) + return + + return this[offset] } -function utf16leToBytes (str) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; i++) { - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) +function _readUInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') } - return byteArray + var len = buf.length + if (offset >= len) + return + + var val + if (littleEndian) { + val = buf[offset] + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + } else { + val = buf[offset] << 8 + if (offset + 1 < len) + val |= buf[offset + 1] + } + return val } -function base64ToBytes (str) { - return base64.toByteArray(str) +Buffer.prototype.readUInt16LE = function (offset, noAssert) { + return _readUInt16(this, offset, true, noAssert) } -function blitBuffer (src, dst, offset, length) { - var pos - for (var i = 0; i < length; i++) { - if ((i + offset >= dst.length) || (i >= src.length)) - break - dst[i + offset] = src[i] +Buffer.prototype.readUInt16BE = function (offset, noAssert) { + return _readUInt16(this, offset, false, noAssert) +} + +function _readUInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') } - return i + + var len = buf.length + if (offset >= len) + return + + var val + if (littleEndian) { + if (offset + 2 < len) + val = buf[offset + 2] << 16 + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + val |= buf[offset] + if (offset + 3 < len) + val = val + (buf[offset + 3] << 24 >>> 0) + } else { + if (offset + 1 < len) + val = buf[offset + 1] << 16 + if (offset + 2 < len) + val |= buf[offset + 2] << 8 + if (offset + 3 < len) + val |= buf[offset + 3] + val = val + (buf[offset] << 24 >>> 0) + } + return val } -function decodeUtf8Char (str) { - try { - return decodeURIComponent(str) - } catch (err) { - return String.fromCharCode(0xFFFD) // UTF 8 invalid char +Buffer.prototype.readUInt32LE = function (offset, noAssert) { + return _readUInt32(this, offset, true, noAssert) +} + +Buffer.prototype.readUInt32BE = function (offset, noAssert) { + return _readUInt32(this, offset, false, noAssert) +} + +Buffer.prototype.readInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, + 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') } + + if (offset >= this.length) + return + + var neg = this[offset] & 0x80 + if (neg) + return (0xff - this[offset] + 1) * -1 + else + return this[offset] } -/* - * We have to make sure that the value is a valid integer. This means that it - * is non-negative. It has no fractional component and that it does not - * exceed the maximum allowed value. - */ -function verifuint (value, max) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value >= 0, 'specified a negative value for writing an unsigned value') - assert(value <= max, 'value is larger than maximum value for type') - assert(Math.floor(value) === value, 'value has a fractional component') +function _readInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val = _readUInt16(buf, offset, littleEndian, true) + var neg = val & 0x8000 + if (neg) + return (0xffff - val + 1) * -1 + else + return val } -function verifsint (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') - assert(Math.floor(value) === value, 'value has a fractional component') +Buffer.prototype.readInt16LE = function (offset, noAssert) { + return _readInt16(this, offset, true, noAssert) } -function verifIEEE754 (value, max, min) { - assert(typeof value === 'number', 'cannot write a non-number as a number') - assert(value <= max, 'value larger than maximum allowed value') - assert(value >= min, 'value smaller than minimum allowed value') +Buffer.prototype.readInt16BE = function (offset, noAssert) { + return _readInt16(this, offset, false, noAssert) } -function assert (test, message) { - if (!test) throw new Error(message || 'Failed assertion') +function _readInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val = _readUInt32(buf, offset, littleEndian, true) + var neg = val & 0x80000000 + if (neg) + return (0xffffffff - val + 1) * -1 + else + return val } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/buffer/index.js","/node_modules/buffer") -},{"FWaASH":50,"base64-js":48,"buffer":52,"ieee754":98}],53:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ - -/** - * Expose `Emitter`. - */ - -if (typeof module !== 'undefined') { - module.exports = Emitter; -} - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - - // Remove event specific arrays for event types that no - // one is subscribed for to avoid memory leak. - if (callbacks.length === 0) { - delete this._callbacks['$' + event]; - } - - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - - var args = new Array(arguments.length - 1) - , callbacks = this._callbacks['$' + event]; - - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/component-emitter/index.js","/node_modules/component-emitter") -},{"FWaASH":50,"buffer":52}],54:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2012-2014 Yusuke Suzuki - Copyright (C) 2015 Ingvar Stepanyan - Copyright (C) 2014 Ivan Nikulin - Copyright (C) 2012-2013 Michael Ficarra - Copyright (C) 2012-2013 Mathias Bynens - Copyright (C) 2013 Irakli Gozalishvili - Copyright (C) 2012 Robert Gust-Bardon - Copyright (C) 2012 John Freeman - Copyright (C) 2011-2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Arpad Borsos +Buffer.prototype.readInt32LE = function (offset, noAssert) { + return _readInt32(this, offset, true, noAssert) +} - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +Buffer.prototype.readInt32BE = function (offset, noAssert) { + return _readInt32(this, offset, false, noAssert) +} - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +function _readFloat (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + return ieee754.read(buf, offset, littleEndian, 23, 4) +} -/*global exports:true, require:true, global:true*/ -(function () { - 'use strict'; +Buffer.prototype.readFloatLE = function (offset, noAssert) { + return _readFloat(this, offset, true, noAssert) +} - var Syntax, - Precedence, - BinaryPrecedence, - SourceNode, - estraverse, - esutils, - base, - indent, - json, - renumber, - hexadecimal, - quotes, - escapeless, - newline, - space, - parentheses, - semicolons, - safeConcatenation, - directive, - extra, - parse, - sourceMap, - sourceCode, - preserveBlankLines, - FORMAT_MINIFY, - FORMAT_DEFAULTS; +Buffer.prototype.readFloatBE = function (offset, noAssert) { + return _readFloat(this, offset, false, noAssert) +} - estraverse = require('estraverse'); - esutils = require('esutils'); +function _readDouble (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') + } - Syntax = estraverse.Syntax; + return ieee754.read(buf, offset, littleEndian, 52, 8) +} - // Generation is done by generateExpression. - function isExpression(node) { - return CodeGenerator.Expression.hasOwnProperty(node.type); - } +Buffer.prototype.readDoubleLE = function (offset, noAssert) { + return _readDouble(this, offset, true, noAssert) +} - // Generation is done by generateStatement. - function isStatement(node) { - return CodeGenerator.Statement.hasOwnProperty(node.type); - } +Buffer.prototype.readDoubleBE = function (offset, noAssert) { + return _readDouble(this, offset, false, noAssert) +} - Precedence = { - Sequence: 0, - Yield: 1, - Assignment: 1, - Conditional: 2, - ArrowFunction: 2, - LogicalOR: 3, - LogicalAND: 4, - BitwiseOR: 5, - BitwiseXOR: 6, - BitwiseAND: 7, - Equality: 8, - Relational: 9, - BitwiseSHIFT: 10, - Additive: 11, - Multiplicative: 12, - Exponentiation: 13, - Await: 14, - Unary: 14, - Postfix: 15, - Call: 16, - New: 17, - TaggedTemplate: 18, - Member: 19, - Primary: 20 - }; +Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'trying to write beyond buffer length') + verifuint(value, 0xff) + } - BinaryPrecedence = { - '||': Precedence.LogicalOR, - '&&': Precedence.LogicalAND, - '|': Precedence.BitwiseOR, - '^': Precedence.BitwiseXOR, - '&': Precedence.BitwiseAND, - '==': Precedence.Equality, - '!=': Precedence.Equality, - '===': Precedence.Equality, - '!==': Precedence.Equality, - 'is': Precedence.Equality, - 'isnt': Precedence.Equality, - '<': Precedence.Relational, - '>': Precedence.Relational, - '<=': Precedence.Relational, - '>=': Precedence.Relational, - 'in': Precedence.Relational, - 'instanceof': Precedence.Relational, - '<<': Precedence.BitwiseSHIFT, - '>>': Precedence.BitwiseSHIFT, - '>>>': Precedence.BitwiseSHIFT, - '+': Precedence.Additive, - '-': Precedence.Additive, - '*': Precedence.Multiplicative, - '%': Precedence.Multiplicative, - '/': Precedence.Multiplicative, - '**': Precedence.Exponentiation - }; + if (offset >= this.length) return - //Flags - var F_ALLOW_IN = 1, - F_ALLOW_CALL = 1 << 1, - F_ALLOW_UNPARATH_NEW = 1 << 2, - F_FUNC_BODY = 1 << 3, - F_DIRECTIVE_CTX = 1 << 4, - F_SEMICOLON_OPT = 1 << 5; + this[offset] = value +} - //Expression flag sets - //NOTE: Flag order: - // F_ALLOW_IN - // F_ALLOW_CALL - // F_ALLOW_UNPARATH_NEW - var E_FTT = F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, - E_TTF = F_ALLOW_IN | F_ALLOW_CALL, - E_TTT = F_ALLOW_IN | F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, - E_TFF = F_ALLOW_IN, - E_FFT = F_ALLOW_UNPARATH_NEW, - E_TFT = F_ALLOW_IN | F_ALLOW_UNPARATH_NEW; +function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffff) + } - //Statement flag sets - //NOTE: Flag order: - // F_ALLOW_IN - // F_FUNC_BODY - // F_DIRECTIVE_CTX - // F_SEMICOLON_OPT - var S_TFFF = F_ALLOW_IN, - S_TFFT = F_ALLOW_IN | F_SEMICOLON_OPT, - S_FFFF = 0x00, - S_TFTF = F_ALLOW_IN | F_DIRECTIVE_CTX, - S_TTFF = F_ALLOW_IN | F_FUNC_BODY; + var len = buf.length + if (offset >= len) + return - function getDefaultOptions() { - // default options - return { - indent: null, - base: null, - parse: null, - comment: false, - format: { - indent: { - style: ' ', - base: 0, - adjustMultilineComment: false - }, - newline: '\n', - space: ' ', - json: false, - renumber: false, - hexadecimal: false, - quotes: 'single', - escapeless: false, - compact: false, - parentheses: true, - semicolons: true, - safeConcatenation: false, - preserveBlankLines: false - }, - moz: { - comprehensionExpressionStartsWithAssignment: false, - starlessGenerator: false - }, - sourceMap: null, - sourceMapRoot: null, - sourceMapWithCode: false, - directive: false, - raw: true, - verbatim: null, - sourceCode: null - }; - } + for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { + buf[offset + i] = + (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} - function stringRepeat(str, num) { - var result = ''; +Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, true, noAssert) +} - for (num |= 0; num > 0; num >>>= 1, str += str) { - if (num & 1) { - result += str; - } - } +Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, false, noAssert) +} - return result; - } +function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffffffff) + } - function hasLineTerminator(str) { - return (/[\r\n]/g).test(str); - } + var len = buf.length + if (offset >= len) + return - function endsWithLineTerminator(str) { - var len = str.length; - return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1)); - } + for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { + buf[offset + i] = + (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} - function merge(target, override) { - var key; - for (key in override) { - if (override.hasOwnProperty(key)) { - target[key] = override[key]; - } - } - return target; - } +Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, true, noAssert) +} - function updateDeeply(target, override) { - var key, val; +Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, false, noAssert) +} - function isHashObject(target) { - return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp); - } +Buffer.prototype.writeInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7f, -0x80) + } - for (key in override) { - if (override.hasOwnProperty(key)) { - val = override[key]; - if (isHashObject(val)) { - if (isHashObject(target[key])) { - updateDeeply(target[key], val); - } else { - target[key] = updateDeeply({}, val); - } - } else { - target[key] = val; - } - } - } - return target; - } + if (offset >= this.length) + return - function generateNumber(value) { - var result, point, temp, exponent, pos; + if (value >= 0) + this.writeUInt8(value, offset, noAssert) + else + this.writeUInt8(0xff + value + 1, offset, noAssert) +} - if (value !== value) { - throw new Error('Numeric literal whose value is NaN'); - } - if (value < 0 || (value === 0 && 1 / value < 0)) { - throw new Error('Numeric literal whose value is negative'); - } +function _writeInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fff, -0x8000) + } - if (value === 1 / 0) { - return json ? 'null' : renumber ? '1e400' : '1e+400'; - } - - result = '' + value; - if (!renumber || result.length < 3) { - return result; - } - - point = result.indexOf('.'); - if (!json && result.charCodeAt(0) === 0x30 /* 0 */ && point === 1) { - point = 0; - result = result.slice(1); - } - temp = result; - result = result.replace('e+', 'e'); - exponent = 0; - if ((pos = temp.indexOf('e')) > 0) { - exponent = +temp.slice(pos + 1); - temp = temp.slice(0, pos); - } - if (point >= 0) { - exponent -= temp.length - point - 1; - temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ''; - } - pos = 0; - while (temp.charCodeAt(temp.length + pos - 1) === 0x30 /* 0 */) { - --pos; - } - if (pos !== 0) { - exponent -= pos; - temp = temp.slice(0, pos); - } - if (exponent !== 0) { - temp += 'e' + exponent; - } - if ((temp.length < result.length || - (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) && - +temp === value) { - result = temp; - } + var len = buf.length + if (offset >= len) + return - return result; - } + if (value >= 0) + _writeUInt16(buf, value, offset, littleEndian, noAssert) + else + _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) +} - // Generate valid RegExp expression. - // This function is based on https://github.com/Constellation/iv Engine +Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, true, noAssert) +} - function escapeRegExpCharacter(ch, previousIsBackslash) { - // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence - if ((ch & ~1) === 0x2028) { - return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029'); - } else if (ch === 10 || ch === 13) { // \n, \r - return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r'); - } - return String.fromCharCode(ch); - } +Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, false, noAssert) +} - function generateRegExp(reg) { - var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; +function _writeInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fffffff, -0x80000000) + } - result = reg.toString(); + var len = buf.length + if (offset >= len) + return - if (reg.source) { - // extract flag from toString result - match = result.match(/\/([^/]*)$/); - if (!match) { - return result; - } + if (value >= 0) + _writeUInt32(buf, value, offset, littleEndian, noAssert) + else + _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) +} - flags = match[1]; - result = ''; +Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, true, noAssert) +} - characterInBrack = false; - previousIsBackslash = false; - for (i = 0, iz = reg.source.length; i < iz; ++i) { - ch = reg.source.charCodeAt(i); +Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, false, noAssert) +} - if (!previousIsBackslash) { - if (characterInBrack) { - if (ch === 93) { // ] - characterInBrack = false; - } - } else { - if (ch === 47) { // / - result += '\\'; - } else if (ch === 91) { // [ - characterInBrack = true; - } - } - result += escapeRegExpCharacter(ch, previousIsBackslash); - previousIsBackslash = ch === 92; // \ - } else { - // if new RegExp("\\\n') is provided, create /\n/ - result += escapeRegExpCharacter(ch, previousIsBackslash); - // prevent like /\\[/]/ - previousIsBackslash = false; - } - } +function _writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) + } - return '/' + result + '/' + flags; - } + var len = buf.length + if (offset >= len) + return - return result; - } + ieee754.write(buf, value, offset, littleEndian, 23, 4) +} - function escapeAllowedCharacter(code, next) { - var hex; +Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, true, noAssert) +} - if (code === 0x08 /* \b */) { - return '\\b'; - } +Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, false, noAssert) +} - if (code === 0x0C /* \f */) { - return '\\f'; - } +function _writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 7 < buf.length, + 'Trying to write beyond buffer length') + verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) + } - if (code === 0x09 /* \t */) { - return '\\t'; - } + var len = buf.length + if (offset >= len) + return - hex = code.toString(16).toUpperCase(); - if (json || code > 0xFF) { - return '\\u' + '0000'.slice(hex.length) + hex; - } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) { - return '\\0'; - } else if (code === 0x000B /* \v */) { // '\v' - return '\\x0B'; - } else { - return '\\x' + '00'.slice(hex.length) + hex; - } - } + ieee754.write(buf, value, offset, littleEndian, 52, 8) +} - function escapeDisallowedCharacter(code) { - if (code === 0x5C /* \ */) { - return '\\\\'; - } +Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, true, noAssert) +} - if (code === 0x0A /* \n */) { - return '\\n'; - } +Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, false, noAssert) +} - if (code === 0x0D /* \r */) { - return '\\r'; - } +// fill(value, start=0, end=buffer.length) +Buffer.prototype.fill = function (value, start, end) { + if (!value) value = 0 + if (!start) start = 0 + if (!end) end = this.length - if (code === 0x2028) { - return '\\u2028'; - } + if (typeof value === 'string') { + value = value.charCodeAt(0) + } - if (code === 0x2029) { - return '\\u2029'; - } + assert(typeof value === 'number' && !isNaN(value), 'value is not a number') + assert(end >= start, 'end < start') - throw new Error('Incorrectly classified character'); - } + // Fill 0 bytes; we're done + if (end === start) return + if (this.length === 0) return - function escapeDirective(str) { - var i, iz, code, quote; + assert(start >= 0 && start < this.length, 'start out of bounds') + assert(end >= 0 && end <= this.length, 'end out of bounds') - quote = quotes === 'double' ? '"' : '\''; - for (i = 0, iz = str.length; i < iz; ++i) { - code = str.charCodeAt(i); - if (code === 0x27 /* ' */) { - quote = '"'; - break; - } else if (code === 0x22 /* " */) { - quote = '\''; - break; - } else if (code === 0x5C /* \ */) { - ++i; - } - } + for (var i = start; i < end; i++) { + this[i] = value + } +} - return quote + str + quote; +Buffer.prototype.inspect = function () { + var out = [] + var len = this.length + for (var i = 0; i < len; i++) { + out[i] = toHex(this[i]) + if (i === exports.INSPECT_MAX_BYTES) { + out[i + 1] = '...' + break } + } + return '' +} - function escapeString(str) { - var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote; +/** + * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. + * Added in Node 0.12. Only available in browsers that support ArrayBuffer. + */ +Buffer.prototype.toArrayBuffer = function () { + if (typeof Uint8Array !== 'undefined') { + if (Buffer._useTypedArrays) { + return (new Buffer(this)).buffer + } else { + var buf = new Uint8Array(this.length) + for (var i = 0, len = buf.length; i < len; i += 1) + buf[i] = this[i] + return buf.buffer + } + } else { + throw new Error('Buffer.toArrayBuffer not supported in this browser') + } +} - for (i = 0, len = str.length; i < len; ++i) { - code = str.charCodeAt(i); - if (code === 0x27 /* ' */) { - ++singleQuotes; - } else if (code === 0x22 /* " */) { - ++doubleQuotes; - } else if (code === 0x2F /* / */ && json) { - result += '\\'; - } else if (esutils.code.isLineTerminator(code) || code === 0x5C /* \ */) { - result += escapeDisallowedCharacter(code); - continue; - } else if (!esutils.code.isIdentifierPartES5(code) && (json && code < 0x20 /* SP */ || !json && !escapeless && (code < 0x20 /* SP */ || code > 0x7E /* ~ */))) { - result += escapeAllowedCharacter(code, str.charCodeAt(i + 1)); - continue; - } - result += String.fromCharCode(code); - } +// HELPER FUNCTIONS +// ================ - single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes)); - quote = single ? '\'' : '"'; +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} - if (!(single ? singleQuotes : doubleQuotes)) { - return quote + result + quote; - } +var BP = Buffer.prototype - str = result; - result = quote; +/** + * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods + */ +Buffer._augment = function (arr) { + arr._isBuffer = true - for (i = 0, len = str.length; i < len; ++i) { - code = str.charCodeAt(i); - if ((code === 0x27 /* ' */ && single) || (code === 0x22 /* " */ && !single)) { - result += '\\'; - } - result += String.fromCharCode(code); - } + // save reference to original Uint8Array get/set methods before overwriting + arr._get = arr.get + arr._set = arr.set - return result + quote; - } + // deprecated, will be removed in node 0.13+ + arr.get = BP.get + arr.set = BP.set - /** - * flatten an array to a string, where the array can contain - * either strings or nested arrays - */ - function flattenToString(arr) { - var i, iz, elem, result = ''; - for (i = 0, iz = arr.length; i < iz; ++i) { - elem = arr[i]; - result += Array.isArray(elem) ? flattenToString(elem) : elem; - } - return result; - } + arr.write = BP.write + arr.toString = BP.toString + arr.toLocaleString = BP.toString + arr.toJSON = BP.toJSON + arr.copy = BP.copy + arr.slice = BP.slice + arr.readUInt8 = BP.readUInt8 + arr.readUInt16LE = BP.readUInt16LE + arr.readUInt16BE = BP.readUInt16BE + arr.readUInt32LE = BP.readUInt32LE + arr.readUInt32BE = BP.readUInt32BE + arr.readInt8 = BP.readInt8 + arr.readInt16LE = BP.readInt16LE + arr.readInt16BE = BP.readInt16BE + arr.readInt32LE = BP.readInt32LE + arr.readInt32BE = BP.readInt32BE + arr.readFloatLE = BP.readFloatLE + arr.readFloatBE = BP.readFloatBE + arr.readDoubleLE = BP.readDoubleLE + arr.readDoubleBE = BP.readDoubleBE + arr.writeUInt8 = BP.writeUInt8 + arr.writeUInt16LE = BP.writeUInt16LE + arr.writeUInt16BE = BP.writeUInt16BE + arr.writeUInt32LE = BP.writeUInt32LE + arr.writeUInt32BE = BP.writeUInt32BE + arr.writeInt8 = BP.writeInt8 + arr.writeInt16LE = BP.writeInt16LE + arr.writeInt16BE = BP.writeInt16BE + arr.writeInt32LE = BP.writeInt32LE + arr.writeInt32BE = BP.writeInt32BE + arr.writeFloatLE = BP.writeFloatLE + arr.writeFloatBE = BP.writeFloatBE + arr.writeDoubleLE = BP.writeDoubleLE + arr.writeDoubleBE = BP.writeDoubleBE + arr.fill = BP.fill + arr.inspect = BP.inspect + arr.toArrayBuffer = BP.toArrayBuffer - /** - * convert generated to a SourceNode when source maps are enabled. - */ - function toSourceNodeWhenNeeded(generated, node) { - if (!sourceMap) { - // with no source maps, generated is either an - // array or a string. if an array, flatten it. - // if a string, just return it - if (Array.isArray(generated)) { - return flattenToString(generated); - } else { - return generated; - } - } - if (node == null) { - if (generated instanceof SourceNode) { - return generated; - } else { - node = {}; - } - } - if (node.loc == null) { - return new SourceNode(null, null, sourceMap, generated, node.name || null); - } - return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); - } + return arr +} - function noEmptySpace() { - return (space) ? space : ' '; - } +// slice(start, end) +function clamp (index, len, defaultValue) { + if (typeof index !== 'number') return defaultValue + index = ~~index; // Coerce to integer. + if (index >= len) return len + if (index >= 0) return index + index += len + if (index >= 0) return index + return 0 +} - function join(left, right) { - var leftSource, - rightSource, - leftCharCode, - rightCharCode; +function coerce (length) { + // Coerce length to a number (possibly NaN), round up + // in case it's fractional (e.g. 123.456) then do a + // double negate to coerce a NaN to 0. Easy, right? + length = ~~Math.ceil(+length) + return length < 0 ? 0 : length +} - leftSource = toSourceNodeWhenNeeded(left).toString(); - if (leftSource.length === 0) { - return [right]; - } +function isArray (subject) { + return (Array.isArray || function (subject) { + return Object.prototype.toString.call(subject) === '[object Array]' + })(subject) +} - rightSource = toSourceNodeWhenNeeded(right).toString(); - if (rightSource.length === 0) { - return [left]; - } +function isArrayish (subject) { + return isArray(subject) || Buffer.isBuffer(subject) || + subject && typeof subject === 'object' && + typeof subject.length === 'number' +} - leftCharCode = leftSource.charCodeAt(leftSource.length - 1); - rightCharCode = rightSource.charCodeAt(0); +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} - if ((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode || - esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode) || - leftCharCode === 0x2F /* / */ && rightCharCode === 0x69 /* i */) { // infix word operators all start with `i` - return [left, noEmptySpace(), right]; - } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) || - esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) { - return [left, right]; - } - return [left, space, right]; +function utf8ToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + var b = str.charCodeAt(i) + if (b <= 0x7F) + byteArray.push(str.charCodeAt(i)) + else { + var start = i + if (b >= 0xD800 && b <= 0xDFFF) i++ + var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') + for (var j = 0; j < h.length; j++) + byteArray.push(parseInt(h[j], 16)) } + } + return byteArray +} - function addIndent(stmt) { - return [base, stmt]; - } +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} - function withIndent(fn) { - var previousBase; - previousBase = base; - base += indent; - fn(base); - base = previousBase; - } +function utf16leToBytes (str) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; i++) { + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } - function calculateSpaces(str) { - var i; - for (i = str.length - 1; i >= 0; --i) { - if (esutils.code.isLineTerminator(str.charCodeAt(i))) { - break; - } - } - return (str.length - 1) - i; - } - - function adjustMultilineComment(value, specialBase) { - var array, i, len, line, j, spaces, previousBase, sn; - - array = value.split(/\r\n|[\r\n]/); - spaces = Number.MAX_VALUE; + return byteArray +} - // first line doesn't have indentation - for (i = 1, len = array.length; i < len; ++i) { - line = array[i]; - j = 0; - while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) { - ++j; - } - if (spaces > j) { - spaces = j; - } - } +function base64ToBytes (str) { + return base64.toByteArray(str) +} - if (typeof specialBase !== 'undefined') { - // pattern like - // { - // var t = 20; /* - // * this is comment - // */ - // } - previousBase = base; - if (array[1][spaces] === '*') { - specialBase += ' '; - } - base = specialBase; - } else { - if (spaces & 1) { - // /* - // * - // */ - // If spaces are odd number, above pattern is considered. - // We waste 1 space. - --spaces; - } - previousBase = base; - } +function blitBuffer (src, dst, offset, length) { + var pos + for (var i = 0; i < length; i++) { + if ((i + offset >= dst.length) || (i >= src.length)) + break + dst[i + offset] = src[i] + } + return i +} - for (i = 1, len = array.length; i < len; ++i) { - sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))); - array[i] = sourceMap ? sn.join('') : sn; - } +function decodeUtf8Char (str) { + try { + return decodeURIComponent(str) + } catch (err) { + return String.fromCharCode(0xFFFD) // UTF 8 invalid char + } +} - base = previousBase; +/* + * We have to make sure that the value is a valid integer. This means that it + * is non-negative. It has no fractional component and that it does not + * exceed the maximum allowed value. + */ +function verifuint (value, max) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value >= 0, 'specified a negative value for writing an unsigned value') + assert(value <= max, 'value is larger than maximum value for type') + assert(Math.floor(value) === value, 'value has a fractional component') +} - return array.join('\n'); - } +function verifsint (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') + assert(Math.floor(value) === value, 'value has a fractional component') +} - function generateComment(comment, specialBase) { - if (comment.type === 'Line') { - if (endsWithLineTerminator(comment.value)) { - return '//' + comment.value; - } else { - // Always use LineTerminator - var result = '//' + comment.value; - if (!preserveBlankLines) { - result += '\n'; - } - return result; - } - } - if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { - return adjustMultilineComment('/*' + comment.value + '*/', specialBase); - } - return '/*' + comment.value + '*/'; - } +function verifIEEE754 (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') +} - function addComments(stmt, result) { - var i, len, comment, save, tailingToStatement, specialBase, fragment, - extRange, range, prevRange, prefix, infix, suffix, count; +function assert (test, message) { + if (!test) throw new Error(message || 'Failed assertion') +} - if (stmt.leadingComments && stmt.leadingComments.length > 0) { - save = result; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/buffer/index.js","/node_modules/gulp-browserify/node_modules/buffer") +},{"base64-js":55,"buffer":57,"ieee754":90,"lYpoI2":59}],58:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - if (preserveBlankLines) { - comment = stmt.leadingComments[0]; - result = []; +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; - extRange = comment.extendedRange; - range = comment.range; +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; - prefix = sourceCode.substring(extRange[0], range[0]); - count = (prefix.match(/\n/g) || []).length; - if (count > 0) { - result.push(stringRepeat('\n', count)); - result.push(addIndent(generateComment(comment))); - } else { - result.push(prefix); - result.push(generateComment(comment)); - } +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; - prevRange = range; +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; - for (i = 1, len = stmt.leadingComments.length; i < len; i++) { - comment = stmt.leadingComments[i]; - range = comment.range; +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; - infix = sourceCode.substring(prevRange[1], range[0]); - count = (infix.match(/\n/g) || []).length; - result.push(stringRepeat('\n', count)); - result.push(addIndent(generateComment(comment))); +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; - prevRange = range; - } + if (!this._events) + this._events = {}; - suffix = sourceCode.substring(range[1], extRange[1]); - count = (suffix.match(/\n/g) || []).length; - result.push(stringRepeat('\n', count)); - } else { - comment = stmt.leadingComments[0]; - result = []; - if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { - result.push('\n'); - } - result.push(generateComment(comment)); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push('\n'); - } + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } - for (i = 1, len = stmt.leadingComments.length; i < len; ++i) { - comment = stmt.leadingComments[i]; - fragment = [generateComment(comment)]; - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - fragment.push('\n'); - } - result.push(addIndent(fragment)); - } - } + handler = this._events[type]; - result.push(addIndent(save)); - } + if (isUndefined(handler)) + return false; - if (stmt.trailingComments) { + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; - if (preserveBlankLines) { - comment = stmt.trailingComments[0]; - extRange = comment.extendedRange; - range = comment.range; + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } - prefix = sourceCode.substring(extRange[0], range[0]); - count = (prefix.match(/\n/g) || []).length; + return true; +}; - if (count > 0) { - result.push(stringRepeat('\n', count)); - result.push(addIndent(generateComment(comment))); - } else { - result.push(prefix); - result.push(generateComment(comment)); - } - } else { - tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); - specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString())); - for (i = 0, len = stmt.trailingComments.length; i < len; ++i) { - comment = stmt.trailingComments[i]; - if (tailingToStatement) { - // We assume target like following script - // - // var t = 20; /** - // * This is comment of t - // */ - if (i === 0) { - // first case - result = [result, indent]; - } else { - result = [result, specialBase]; - } - result.push(generateComment(comment, specialBase)); - } else { - result = [result, addIndent(generateComment(comment))]; - } - if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result = [result, '\n']; - } - } - } - } +EventEmitter.prototype.addListener = function(type, listener) { + var m; - return result; - } + if (!isFunction(listener)) + throw TypeError('listener must be a function'); - function generateBlankLines(start, end, result) { - var j, newlineCount = 0; + if (!this._events) + this._events = {}; - for (j = start; j < end; j++) { - if (sourceCode[j] === '\n') { - newlineCount++; - } - } + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); - for (j = 1; j < newlineCount; j++) { - result.push(newline); - } - } + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; - function parenthesize(text, current, should) { - if (current < should) { - return ['(', text, ')']; - } - return text; + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; } - function generateVerbatimString(string) { - var i, iz, result; - result = string.split(/\r\n|\n/); - for (i = 1, iz = result.length; i < iz; i++) { - result[i] = newline + base + result[i]; - } - return result; + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } } + } - function generateVerbatim(expr, precedence) { - var verbatim, result, prec; - verbatim = expr[extra.verbatim]; + return this; +}; - if (typeof verbatim === 'string') { - result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, precedence); - } else { - // verbatim is object - result = generateVerbatimString(verbatim.content); - prec = (verbatim.precedence != null) ? verbatim.precedence : Precedence.Sequence; - result = parenthesize(result, prec, precedence); - } +EventEmitter.prototype.on = EventEmitter.prototype.addListener; - return toSourceNodeWhenNeeded(result, expr); - } +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); - function CodeGenerator() { - } + var fired = false; - // Helpers. + function g() { + this.removeListener(type, g); - CodeGenerator.prototype.maybeBlock = function(stmt, flags) { - var result, noLeadingComment, that = this; + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } - noLeadingComment = !extra.comment || !stmt.leadingComments; + g.listener = listener; + this.on(type, g); - if (stmt.type === Syntax.BlockStatement && noLeadingComment) { - return [space, this.generateStatement(stmt, flags)]; - } + return this; +}; - if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { - return ';'; - } +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; - withIndent(function () { - result = [ - newline, - addIndent(that.generateStatement(stmt, flags)) - ]; - }); + if (!isFunction(listener)) + throw TypeError('listener must be a function'); - return result; - }; + if (!this._events || !this._events[type]) + return this; - CodeGenerator.prototype.maybeBlockSuffix = function (stmt, result) { - var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); - if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { - return [result, space]; - } - if (ends) { - return [result, base]; - } - return [result, newline, base]; - }; + list = this._events[type]; + length = list.length; + position = -1; - function generateIdentifier(node) { - return toSourceNodeWhenNeeded(node.name, node); - } + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); - function generateAsyncPrefix(node, spaceRequired) { - return node.async ? 'async' + (spaceRequired ? noEmptySpace() : space) : ''; + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } } - function generateStarSuffix(node) { - var isGenerator = node.generator && !extra.moz.starlessGenerator; - return isGenerator ? '*' + space : ''; - } + if (position < 0) + return this; - function generateMethodPrefix(prop) { - var func = prop.value, prefix = ''; - if (func.async) { - prefix += generateAsyncPrefix(func, !prop.computed); - } - if (func.generator) { - // avoid space before method name - prefix += generateStarSuffix(func) ? '*' : ''; - } - return prefix; + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); } - CodeGenerator.prototype.generatePattern = function (node, precedence, flags) { - if (node.type === Syntax.Identifier) { - return generateIdentifier(node); - } - return this.generateExpression(node, precedence, flags); - }; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } - CodeGenerator.prototype.generateFunctionParams = function (node) { - var i, iz, result, hasDefault; + return this; +}; - hasDefault = false; +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; - if (node.type === Syntax.ArrowFunctionExpression && - !node.rest && (!node.defaults || node.defaults.length === 0) && - node.params.length === 1 && node.params[0].type === Syntax.Identifier) { - // arg => { } case - result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])]; - } else { - result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : []; - result.push('('); - if (node.defaults) { - hasDefault = true; - } - for (i = 0, iz = node.params.length; i < iz; ++i) { - if (hasDefault && node.defaults[i]) { - // Handle default values. - result.push(this.generateAssignment(node.params[i], node.defaults[i], '=', Precedence.Assignment, E_TTT)); - } else { - result.push(this.generatePattern(node.params[i], Precedence.Assignment, E_TTT)); - } - if (i + 1 < iz) { - result.push(',' + space); - } - } + if (!this._events) + return this; - if (node.rest) { - if (node.params.length) { - result.push(',' + space); - } - result.push('...'); - result.push(generateIdentifier(node.rest)); - } + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } - result.push(')'); - } + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } - return result; - }; + listeners = this._events[type]; - CodeGenerator.prototype.generateFunctionBody = function (node) { - var result, expr; + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; - result = this.generateFunctionParams(node); + return this; +}; - if (node.type === Syntax.ArrowFunctionExpression) { - result.push(space); - result.push('=>'); - } +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; - if (node.expression) { - result.push(space); - expr = this.generateExpression(node.body, Precedence.Assignment, E_TTT); - if (expr.toString().charAt(0) === '{') { - expr = ['(', expr, ')']; - } - result.push(expr); - } else { - result.push(this.maybeBlock(node.body, S_TTFF)); - } +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; - return result; - }; +function isFunction(arg) { + return typeof arg === 'function'; +} - CodeGenerator.prototype.generateIterationForStatement = function (operator, stmt, flags) { - var result = ['for' + (stmt.await ? noEmptySpace() + 'await' : '') + space + '('], that = this; - withIndent(function () { - if (stmt.left.type === Syntax.VariableDeclaration) { - withIndent(function () { - result.push(stmt.left.kind + noEmptySpace()); - result.push(that.generateStatement(stmt.left.declarations[0], S_FFFF)); - }); - } else { - result.push(that.generateExpression(stmt.left, Precedence.Call, E_TTT)); - } +function isNumber(arg) { + return typeof arg === 'number'; +} - result = join(result, operator); - result = [join( - result, - that.generateExpression(stmt.right, Precedence.Assignment, E_TTT) - ), ')']; - }); - result.push(this.maybeBlock(stmt.body, flags)); - return result; - }; +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} - CodeGenerator.prototype.generatePropertyKey = function (expr, computed) { - var result = []; +function isUndefined(arg) { + return arg === void 0; +} - if (computed) { - result.push('['); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/events/events.js","/node_modules/gulp-browserify/node_modules/events") +},{"buffer":57,"lYpoI2":59}],59:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// shim for using process in browser - result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT)); +var process = module.exports = {}; - if (computed) { - result.push(']'); - } +process.nextTick = (function () { + var canSetImmediate = typeof window !== 'undefined' + && window.setImmediate; + var canPost = typeof window !== 'undefined' + && window.postMessage && window.addEventListener + ; - return result; - }; + if (canSetImmediate) { + return function (f) { return window.setImmediate(f) }; + } - CodeGenerator.prototype.generateAssignment = function (left, right, operator, precedence, flags) { - if (Precedence.Assignment < precedence) { - flags |= F_ALLOW_IN; - } + if (canPost) { + var queue = []; + window.addEventListener('message', function (ev) { + var source = ev.source; + if ((source === window || source === null) && ev.data === 'process-tick') { + ev.stopPropagation(); + if (queue.length > 0) { + var fn = queue.shift(); + fn(); + } + } + }, true); - return parenthesize( - [ - this.generateExpression(left, Precedence.Call, flags), - space + operator + space, - this.generateExpression(right, Precedence.Assignment, flags) - ], - Precedence.Assignment, - precedence - ); - }; + return function nextTick(fn) { + queue.push(fn); + window.postMessage('process-tick', '*'); + }; + } - CodeGenerator.prototype.semicolon = function (flags) { - if (!semicolons && flags & F_SEMICOLON_OPT) { - return ''; - } - return ';'; + return function nextTick(fn) { + setTimeout(fn, 0); }; +})(); - // Statements. +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; - CodeGenerator.Statement = { +function noop() {} - BlockStatement: function (stmt, flags) { - var range, content, result = ['{', newline], that = this; +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; - withIndent(function () { - // handle functions without any code - if (stmt.body.length === 0 && preserveBlankLines) { - range = stmt.range; - if (range[1] - range[0] > 2) { - content = sourceCode.substring(range[0] + 1, range[1] - 1); - if (content[0] === '\n') { - result = ['{']; - } - result.push(content); - } - } +process.binding = function (name) { + throw new Error('process.binding is not supported'); +} - var i, iz, fragment, bodyFlags; - bodyFlags = S_TFFF; - if (flags & F_FUNC_BODY) { - bodyFlags |= F_DIRECTIVE_CTX; - } +// TODO(shtylman) +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; - for (i = 0, iz = stmt.body.length; i < iz; ++i) { - if (preserveBlankLines) { - // handle spaces before the first line - if (i === 0) { - if (stmt.body[0].leadingComments) { - range = stmt.body[0].leadingComments[0].extendedRange; - content = sourceCode.substring(range[0], range[1]); - if (content[0] === '\n') { - result = ['{']; - } - } - if (!stmt.body[0].leadingComments) { - generateBlankLines(stmt.range[0], stmt.body[0].range[0], result); - } - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/process") +},{"buffer":57,"lYpoI2":59}],60:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - // handle spaces between lines - if (i > 0) { - if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { - generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); - } - } - } +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. - if (i === iz - 1) { - bodyFlags |= F_SEMICOLON_OPT; - } +module.exports = Duplex; +var inherits = require('inherits'); +var setImmediate = require('process/browser.js').nextTick; +var Readable = require('./readable.js'); +var Writable = require('./writable.js'); - if (stmt.body[i].leadingComments && preserveBlankLines) { - fragment = that.generateStatement(stmt.body[i], bodyFlags); - } else { - fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags)); - } +inherits(Duplex, Readable); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - if (preserveBlankLines && i < iz - 1) { - // don't add a new line if there are leading coments - // in the next statement - if (!stmt.body[i + 1].leadingComments) { - result.push(newline); - } - } else { - result.push(newline); - } - } +Duplex.prototype.write = Writable.prototype.write; +Duplex.prototype.end = Writable.prototype.end; +Duplex.prototype._write = Writable.prototype._write; - if (preserveBlankLines) { - // handle spaces after the last line - if (i === iz - 1) { - if (!stmt.body[i].trailingComments) { - generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); - } - } - } - } - }); +function Duplex(options) { + if (!(this instanceof Duplex)) + return new Duplex(options); - result.push(addIndent('}')); - return result; - }, + Readable.call(this, options); + Writable.call(this, options); - BreakStatement: function (stmt, flags) { - if (stmt.label) { - return 'break ' + stmt.label.name + this.semicolon(flags); - } - return 'break' + this.semicolon(flags); - }, + if (options && options.readable === false) + this.readable = false; - ContinueStatement: function (stmt, flags) { - if (stmt.label) { - return 'continue ' + stmt.label.name + this.semicolon(flags); - } - return 'continue' + this.semicolon(flags); - }, + if (options && options.writable === false) + this.writable = false; - ClassBody: function (stmt, flags) { - var result = [ '{', newline], that = this; + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) + this.allowHalfOpen = false; - withIndent(function (indent) { - var i, iz; + this.once('end', onend); +} - for (i = 0, iz = stmt.body.length; i < iz; ++i) { - result.push(indent); - result.push(that.generateExpression(stmt.body[i], Precedence.Sequence, E_TTT)); - if (i + 1 < iz) { - result.push(newline); - } - } - }); +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) + return; - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base); - result.push('}'); - return result; - }, + // no more data can be written. + // But allow more writes to happen in this tick. + var self = this; + setImmediate(function () { + self.end(); + }); +} - ClassDeclaration: function (stmt, flags) { - var result, fragment; - result = ['class']; - if (stmt.id) { - result = join(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT)); - } - if (stmt.superClass) { - fragment = join('extends', this.generateExpression(stmt.superClass, Precedence.Unary, E_TTT)); - result = join(result, fragment); - } - result.push(space); - result.push(this.generateStatement(stmt.body, S_TFFT)); - return result; - }, +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/duplex.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./readable.js":64,"./writable.js":66,"buffer":57,"inherits":91,"lYpoI2":59,"process/browser.js":62}],61:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - DirectiveStatement: function (stmt, flags) { - if (extra.raw && stmt.raw) { - return stmt.raw + this.semicolon(flags); - } - return escapeDirective(stmt.directive) + this.semicolon(flags); - }, +module.exports = Stream; - DoWhileStatement: function (stmt, flags) { - // Because `do 42 while (cond)` is Syntax Error. We need semicolon. - var result = join('do', this.maybeBlock(stmt.body, S_TFFF)); - result = this.maybeBlockSuffix(stmt.body, result); - return join(result, [ - 'while' + space + '(', - this.generateExpression(stmt.test, Precedence.Sequence, E_TTT), - ')' + this.semicolon(flags) - ]); - }, +var EE = require('events').EventEmitter; +var inherits = require('inherits'); - CatchClause: function (stmt, flags) { - var result, that = this; - withIndent(function () { - var guard; +inherits(Stream, EE); +Stream.Readable = require('./readable.js'); +Stream.Writable = require('./writable.js'); +Stream.Duplex = require('./duplex.js'); +Stream.Transform = require('./transform.js'); +Stream.PassThrough = require('./passthrough.js'); - if (stmt.param) { - result = [ - 'catch' + space + '(', - that.generateExpression(stmt.param, Precedence.Sequence, E_TTT), - ')' - ]; +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; - if (stmt.guard) { - guard = that.generateExpression(stmt.guard, Precedence.Sequence, E_TTT); - result.splice(2, 0, ' if ', guard); - } - } else { - result = ['catch']; - } - }); - result.push(this.maybeBlock(stmt.body, S_TFFF)); - return result; - }, - DebuggerStatement: function (stmt, flags) { - return 'debugger' + this.semicolon(flags); - }, - EmptyStatement: function (stmt, flags) { - return ';'; - }, +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. - ExportDefaultDeclaration: function (stmt, flags) { - var result = [ 'export' ], bodyFlags; +function Stream() { + EE.call(this); +} - bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; +Stream.prototype.pipe = function(dest, options) { + var source = this; - // export default HoistableDeclaration[Default] - // export default AssignmentExpression[In] ; - result = join(result, 'default'); - if (isStatement(stmt.declaration)) { - result = join(result, this.generateStatement(stmt.declaration, bodyFlags)); - } else { - result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); - } - return result; - }, + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } - ExportNamedDeclaration: function (stmt, flags) { - var result = [ 'export' ], bodyFlags, that = this; + source.on('data', ondata); - bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } - // export VariableStatement - // export Declaration[Default] - if (stmt.declaration) { - return join(result, this.generateStatement(stmt.declaration, bodyFlags)); - } + dest.on('drain', ondrain); - // export ExportClause[NoReference] FromClause ; - // export ExportClause ; - if (stmt.specifiers) { - if (stmt.specifiers.length === 0) { - result = join(result, '{' + space + '}'); - } else if (stmt.specifiers[0].type === Syntax.ExportBatchSpecifier) { - result = join(result, this.generateExpression(stmt.specifiers[0], Precedence.Sequence, E_TTT)); - } else { - result = join(result, '{'); - withIndent(function (indent) { - var i, iz; - result.push(newline); - for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) { - result.push(indent); - result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); - if (i + 1 < iz) { - result.push(',' + newline); - } - } - }); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base + '}'); - } + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } - if (stmt.source) { - result = join(result, [ - 'from' + space, - // ModuleSpecifier - this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), - this.semicolon(flags) - ]); - } else { - result.push(this.semicolon(flags)); - } - } - return result; - }, + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; - ExportAllDeclaration: function (stmt, flags) { - // export * FromClause ; - return [ - 'export' + space, - '*' + space, - 'from' + space, - // ModuleSpecifier - this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), - this.semicolon(flags) - ]; - }, + dest.end(); + } - ExpressionStatement: function (stmt, flags) { - var result, fragment; - function isClassPrefixed(fragment) { - var code; - if (fragment.slice(0, 5) !== 'class') { - return false; - } - code = fragment.charCodeAt(5); - return code === 0x7B /* '{' */ || esutils.code.isWhiteSpace(code) || esutils.code.isLineTerminator(code); - } + function onclose() { + if (didOnEnd) return; + didOnEnd = true; - function isFunctionPrefixed(fragment) { - var code; - if (fragment.slice(0, 8) !== 'function') { - return false; - } - code = fragment.charCodeAt(8); - return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); - } + if (typeof dest.destroy === 'function') dest.destroy(); + } - function isAsyncPrefixed(fragment) { - var code, i, iz; - if (fragment.slice(0, 5) !== 'async') { - return false; - } - if (!esutils.code.isWhiteSpace(fragment.charCodeAt(5))) { - return false; - } - for (i = 6, iz = fragment.length; i < iz; ++i) { - if (!esutils.code.isWhiteSpace(fragment.charCodeAt(i))) { - break; - } - } - if (i === iz) { - return false; - } - if (fragment.slice(i, i + 8) !== 'function') { - return false; - } - code = fragment.charCodeAt(i + 8); - return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); - } + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } - result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)]; - // 12.4 '{', 'function', 'class' is not allowed in this position. - // wrap expression with parentheses - fragment = toSourceNodeWhenNeeded(result).toString(); - if (fragment.charCodeAt(0) === 0x7B /* '{' */ || // ObjectExpression - isClassPrefixed(fragment) || - isFunctionPrefixed(fragment) || - isAsyncPrefixed(fragment) || - (directive && (flags & F_DIRECTIVE_CTX) && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) { - result = ['(', result, ')' + this.semicolon(flags)]; - } else { - result.push(this.semicolon(flags)); - } - return result; - }, + source.on('error', onerror); + dest.on('error', onerror); - ImportDeclaration: function (stmt, flags) { - // ES6: 15.2.1 valid import declarations: - // - import ImportClause FromClause ; - // - import ModuleSpecifier ; - var result, cursor, that = this; + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); - // If no ImportClause is present, - // this should be `import ModuleSpecifier` so skip `from` - // ModuleSpecifier is StringLiteral. - if (stmt.specifiers.length === 0) { - // import ModuleSpecifier ; - return [ - 'import', - space, - // ModuleSpecifier - this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), - this.semicolon(flags) - ]; - } + source.removeListener('end', onend); + source.removeListener('close', onclose); - // import ImportClause FromClause ; - result = [ - 'import' - ]; - cursor = 0; + source.removeListener('error', onerror); + dest.removeListener('error', onerror); - // ImportedBinding - if (stmt.specifiers[cursor].type === Syntax.ImportDefaultSpecifier) { - result = join(result, [ - this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) - ]); - ++cursor; - } + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); - if (stmt.specifiers[cursor]) { - if (cursor !== 0) { - result.push(','); - } + dest.removeListener('close', cleanup); + } - if (stmt.specifiers[cursor].type === Syntax.ImportNamespaceSpecifier) { - // NameSpaceImport - result = join(result, [ - space, - this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) - ]); - } else { - // NamedImports - result.push(space + '{'); + source.on('end', cleanup); + source.on('close', cleanup); - if ((stmt.specifiers.length - cursor) === 1) { - // import { ... } from "..."; - result.push(space); - result.push(this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)); - result.push(space + '}' + space); - } else { - // import { - // ..., - // ..., - // } from "..."; - withIndent(function (indent) { - var i, iz; - result.push(newline); - for (i = cursor, iz = stmt.specifiers.length; i < iz; ++i) { - result.push(indent); - result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); - if (i + 1 < iz) { - result.push(',' + newline); - } - } - }); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base + '}' + space); - } - } - } + dest.on('close', cleanup); - result = join(result, [ - 'from' + space, - // ModuleSpecifier - this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), - this.semicolon(flags) - ]); - return result; - }, + dest.emit('pipe', source); - VariableDeclarator: function (stmt, flags) { - var itemFlags = (flags & F_ALLOW_IN) ? E_TTT : E_FTT; - if (stmt.init) { - return [ - this.generateExpression(stmt.id, Precedence.Assignment, itemFlags), - space, - '=', - space, - this.generateExpression(stmt.init, Precedence.Assignment, itemFlags) - ]; - } - return this.generatePattern(stmt.id, Precedence.Assignment, itemFlags); - }, + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; - VariableDeclaration: function (stmt, flags) { - // VariableDeclarator is typed as Statement, - // but joined with comma (not LineTerminator). - // So if comment is attached to target node, we should specialize. - var result, i, iz, node, bodyFlags, that = this; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/index.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./duplex.js":60,"./passthrough.js":63,"./readable.js":64,"./transform.js":65,"./writable.js":66,"buffer":57,"events":58,"inherits":91,"lYpoI2":59}],62:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// shim for using process in browser - result = [ stmt.kind ]; +var process = module.exports = {}; - bodyFlags = (flags & F_ALLOW_IN) ? S_TFFF : S_FFFF; +process.nextTick = (function () { + var canSetImmediate = typeof window !== 'undefined' + && window.setImmediate; + var canPost = typeof window !== 'undefined' + && window.postMessage && window.addEventListener + ; - function block() { - node = stmt.declarations[0]; - if (extra.comment && node.leadingComments) { - result.push('\n'); - result.push(addIndent(that.generateStatement(node, bodyFlags))); - } else { - result.push(noEmptySpace()); - result.push(that.generateStatement(node, bodyFlags)); - } + if (canSetImmediate) { + return function (f) { return window.setImmediate(f) }; + } - for (i = 1, iz = stmt.declarations.length; i < iz; ++i) { - node = stmt.declarations[i]; - if (extra.comment && node.leadingComments) { - result.push(',' + newline); - result.push(addIndent(that.generateStatement(node, bodyFlags))); - } else { - result.push(',' + space); - result.push(that.generateStatement(node, bodyFlags)); - } + if (canPost) { + var queue = []; + window.addEventListener('message', function (ev) { + var source = ev.source; + if ((source === window || source === null) && ev.data === 'process-tick') { + ev.stopPropagation(); + if (queue.length > 0) { + var fn = queue.shift(); + fn(); } } + }, true); - if (stmt.declarations.length > 1) { - withIndent(block); - } else { - block(); - } + return function nextTick(fn) { + queue.push(fn); + window.postMessage('process-tick', '*'); + }; + } - result.push(this.semicolon(flags)); + return function nextTick(fn) { + setTimeout(fn, 0); + }; +})(); - return result; - }, +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; - ThrowStatement: function (stmt, flags) { - return [join( - 'throw', - this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) - ), this.semicolon(flags)]; - }, +process.binding = function (name) { + throw new Error('process.binding is not supported'); +} - TryStatement: function (stmt, flags) { - var result, i, iz, guardedHandlers; +// TODO(shtylman) +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; - result = ['try', this.maybeBlock(stmt.block, S_TFFF)]; - result = this.maybeBlockSuffix(stmt.block, result); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/node_modules/process/browser.js","/node_modules/gulp-browserify/node_modules/stream-browserify/node_modules/process") +},{"buffer":57,"lYpoI2":59}],63:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - if (stmt.handlers) { - // old interface - for (i = 0, iz = stmt.handlers.length; i < iz; ++i) { - result = join(result, this.generateStatement(stmt.handlers[i], S_TFFF)); - if (stmt.finalizer || i + 1 !== iz) { - result = this.maybeBlockSuffix(stmt.handlers[i].body, result); - } - } - } else { - guardedHandlers = stmt.guardedHandlers || []; +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. - for (i = 0, iz = guardedHandlers.length; i < iz; ++i) { - result = join(result, this.generateStatement(guardedHandlers[i], S_TFFF)); - if (stmt.finalizer || i + 1 !== iz) { - result = this.maybeBlockSuffix(guardedHandlers[i].body, result); - } - } +module.exports = PassThrough; - // new interface - if (stmt.handler) { - if (Array.isArray(stmt.handler)) { - for (i = 0, iz = stmt.handler.length; i < iz; ++i) { - result = join(result, this.generateStatement(stmt.handler[i], S_TFFF)); - if (stmt.finalizer || i + 1 !== iz) { - result = this.maybeBlockSuffix(stmt.handler[i].body, result); - } - } - } else { - result = join(result, this.generateStatement(stmt.handler, S_TFFF)); - if (stmt.finalizer) { - result = this.maybeBlockSuffix(stmt.handler.body, result); - } - } - } - } - if (stmt.finalizer) { - result = join(result, ['finally', this.maybeBlock(stmt.finalizer, S_TFFF)]); - } - return result; - }, +var Transform = require('./transform.js'); +var inherits = require('inherits'); +inherits(PassThrough, Transform); - SwitchStatement: function (stmt, flags) { - var result, fragment, i, iz, bodyFlags, that = this; - withIndent(function () { - result = [ - 'switch' + space + '(', - that.generateExpression(stmt.discriminant, Precedence.Sequence, E_TTT), - ')' + space + '{' + newline - ]; - }); - if (stmt.cases) { - bodyFlags = S_TFFF; - for (i = 0, iz = stmt.cases.length; i < iz; ++i) { - if (i === iz - 1) { - bodyFlags |= F_SEMICOLON_OPT; - } - fragment = addIndent(this.generateStatement(stmt.cases[i], bodyFlags)); - result.push(fragment); - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - } - result.push(addIndent('}')); - return result; - }, +function PassThrough(options) { + if (!(this instanceof PassThrough)) + return new PassThrough(options); - SwitchCase: function (stmt, flags) { - var result, fragment, i, iz, bodyFlags, that = this; - withIndent(function () { - if (stmt.test) { - result = [ - join('case', that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)), - ':' - ]; - } else { - result = ['default:']; - } + Transform.call(this, options); +} - i = 0; - iz = stmt.consequent.length; - if (iz && stmt.consequent[0].type === Syntax.BlockStatement) { - fragment = that.maybeBlock(stmt.consequent[0], S_TFFF); - result.push(fragment); - i = 1; - } +PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); +}; - if (i !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/passthrough.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./transform.js":65,"buffer":57,"inherits":91,"lYpoI2":59}],64:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - bodyFlags = S_TFFF; - for (; i < iz; ++i) { - if (i === iz - 1 && flags & F_SEMICOLON_OPT) { - bodyFlags |= F_SEMICOLON_OPT; - } - fragment = addIndent(that.generateStatement(stmt.consequent[i], bodyFlags)); - result.push(fragment); - if (i + 1 !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - result.push(newline); - } - } - }); - return result; - }, +module.exports = Readable; +Readable.ReadableState = ReadableState; - IfStatement: function (stmt, flags) { - var result, bodyFlags, semicolonOptional, that = this; - withIndent(function () { - result = [ - 'if' + space + '(', - that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), - ')' - ]; - }); - semicolonOptional = flags & F_SEMICOLON_OPT; - bodyFlags = S_TFFF; - if (semicolonOptional) { - bodyFlags |= F_SEMICOLON_OPT; - } - if (stmt.alternate) { - result.push(this.maybeBlock(stmt.consequent, S_TFFF)); - result = this.maybeBlockSuffix(stmt.consequent, result); - if (stmt.alternate.type === Syntax.IfStatement) { - result = join(result, ['else ', this.generateStatement(stmt.alternate, bodyFlags)]); - } else { - result = join(result, join('else', this.maybeBlock(stmt.alternate, bodyFlags))); - } - } else { - result.push(this.maybeBlock(stmt.consequent, bodyFlags)); - } - return result; - }, +var EE = require('events').EventEmitter; +var Stream = require('./index.js'); +var Buffer = require('buffer').Buffer; +var setImmediate = require('process/browser.js').nextTick; +var StringDecoder; - ForStatement: function (stmt, flags) { - var result, that = this; - withIndent(function () { - result = ['for' + space + '(']; - if (stmt.init) { - if (stmt.init.type === Syntax.VariableDeclaration) { - result.push(that.generateStatement(stmt.init, S_FFFF)); - } else { - // F_ALLOW_IN becomes false. - result.push(that.generateExpression(stmt.init, Precedence.Sequence, E_FTT)); - result.push(';'); - } - } else { - result.push(';'); - } +var inherits = require('inherits'); +inherits(Readable, Stream); - if (stmt.test) { - result.push(space); - result.push(that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)); - result.push(';'); - } else { - result.push(';'); - } +function ReadableState(options, stream) { + options = options || {}; - if (stmt.update) { - result.push(space); - result.push(that.generateExpression(stmt.update, Precedence.Sequence, E_TTT)); - result.push(')'); - } else { - result.push(')'); - } - }); + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); - return result; - }, + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; - ForInStatement: function (stmt, flags) { - return this.generateIterationForStatement('in', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); - }, + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = false; + this.ended = false; + this.endEmitted = false; + this.reading = false; - ForOfStatement: function (stmt, flags) { - return this.generateIterationForStatement('of', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); - }, + // In streams that never have any data, and do push(null) right away, + // the consumer can miss the 'end' event if they do some I/O before + // consuming the stream. So, we don't emit('end') until some reading + // happens. + this.calledRead = false; - LabeledStatement: function (stmt, flags) { - return [stmt.label.name + ':', this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)]; - }, + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, becuase any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; - Program: function (stmt, flags) { - var result, fragment, i, iz, bodyFlags; - iz = stmt.body.length; - result = [safeConcatenation && iz > 0 ? '\n' : '']; - bodyFlags = S_TFTF; - for (i = 0; i < iz; ++i) { - if (!safeConcatenation && i === iz - 1) { - bodyFlags |= F_SEMICOLON_OPT; - } + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; - if (preserveBlankLines) { - // handle spaces before the first line - if (i === 0) { - if (!stmt.body[0].leadingComments) { - generateBlankLines(stmt.range[0], stmt.body[i].range[0], result); - } - } - // handle spaces between lines - if (i > 0) { - if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { - generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); - } - } - } + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; - fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags)); - result.push(fragment); - if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - if (preserveBlankLines) { - if (!stmt.body[i + 1].leadingComments) { - result.push(newline); - } - } else { - result.push(newline); - } - } + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - if (preserveBlankLines) { - // handle spaces after the last line - if (i === iz - 1) { - if (!stmt.body[i].trailingComments) { - generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); - } - } - } - } - return result; - }, + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; - FunctionDeclaration: function (stmt, flags) { - return [ - generateAsyncPrefix(stmt, true), - 'function', - generateStarSuffix(stmt) || noEmptySpace(), - stmt.id ? generateIdentifier(stmt.id) : '', - this.generateFunctionBody(stmt) - ]; - }, + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; - ReturnStatement: function (stmt, flags) { - if (stmt.argument) { - return [join( - 'return', - this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) - ), this.semicolon(flags)]; - } - return ['return' + this.semicolon(flags)]; - }, + // if true, a maybeReadMore has been scheduled + this.readingMore = false; - WhileStatement: function (stmt, flags) { - var result, that = this; - withIndent(function () { - result = [ - 'while' + space + '(', - that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), - ')' - ]; - }); - result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); - return result; - }, + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) + StringDecoder = require('string_decoder').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} - WithStatement: function (stmt, flags) { - var result, that = this; - withIndent(function () { - result = [ - 'with' + space + '(', - that.generateExpression(stmt.object, Precedence.Sequence, E_TTT), - ')' - ]; - }); - result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); - return result; - } +function Readable(options) { + if (!(this instanceof Readable)) + return new Readable(options); - }; + this._readableState = new ReadableState(options, this); - merge(CodeGenerator.prototype, CodeGenerator.Statement); + // legacy + this.readable = true; - // Expressions. + Stream.call(this); +} - CodeGenerator.Expression = { +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function(chunk, encoding) { + var state = this._readableState; - SequenceExpression: function (expr, precedence, flags) { - var result, i, iz; - if (Precedence.Sequence < precedence) { - flags |= F_ALLOW_IN; - } - result = []; - for (i = 0, iz = expr.expressions.length; i < iz; ++i) { - result.push(this.generateExpression(expr.expressions[i], Precedence.Assignment, flags)); - if (i + 1 < iz) { - result.push(',' + space); - } - } - return parenthesize(result, Precedence.Sequence, precedence); - }, + if (typeof chunk === 'string' && !state.objectMode) { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = new Buffer(chunk, encoding); + encoding = ''; + } + } - AssignmentExpression: function (expr, precedence, flags) { - return this.generateAssignment(expr.left, expr.right, expr.operator, precedence, flags); - }, + return readableAddChunk(this, state, chunk, encoding, false); +}; - ArrowFunctionExpression: function (expr, precedence, flags) { - return parenthesize(this.generateFunctionBody(expr), Precedence.ArrowFunction, precedence); - }, +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function(chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; - ConditionalExpression: function (expr, precedence, flags) { - if (Precedence.Conditional < precedence) { - flags |= F_ALLOW_IN; - } - return parenthesize( - [ - this.generateExpression(expr.test, Precedence.LogicalOR, flags), - space + '?' + space, - this.generateExpression(expr.consequent, Precedence.Assignment, flags), - space + ':' + space, - this.generateExpression(expr.alternate, Precedence.Assignment, flags) - ], - Precedence.Conditional, - precedence - ); - }, +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null || chunk === undefined) { + state.reading = false; + if (!state.ended) + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var e = new Error('stream.unshift() after end event'); + stream.emit('error', e); + } else { + if (state.decoder && !addToFront && !encoding) + chunk = state.decoder.write(chunk); - LogicalExpression: function (expr, precedence, flags) { - return this.BinaryExpression(expr, precedence, flags); - }, + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) { + state.buffer.unshift(chunk); + } else { + state.reading = false; + state.buffer.push(chunk); + } - BinaryExpression: function (expr, precedence, flags) { - var result, leftPrecedence, rightPrecedence, currentPrecedence, fragment, leftSource; - currentPrecedence = BinaryPrecedence[expr.operator]; - leftPrecedence = expr.operator === '**' ? Precedence.Postfix : currentPrecedence; - rightPrecedence = expr.operator === '**' ? currentPrecedence : currentPrecedence + 1; + if (state.needReadable) + emitReadable(stream); - if (currentPrecedence < precedence) { - flags |= F_ALLOW_IN; - } + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } - fragment = this.generateExpression(expr.left, leftPrecedence, flags); + return needMoreData(state); +} - leftSource = fragment.toString(); - if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))) { - result = [fragment, noEmptySpace(), expr.operator]; - } else { - result = join(fragment, expr.operator); - } - fragment = this.generateExpression(expr.right, rightPrecedence, flags); +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && + (state.needReadable || + state.length < state.highWaterMark || + state.length === 0); +} - if (expr.operator === '/' && fragment.toString().charAt(0) === '/' || - expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') { - // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start - result.push(noEmptySpace()); - result.push(fragment); - } else { - result = join(result, fragment); - } +// backwards compatibility. +Readable.prototype.setEncoding = function(enc) { + if (!StringDecoder) + StringDecoder = require('string_decoder').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; +}; - if (expr.operator === 'in' && !(flags & F_ALLOW_IN)) { - return ['(', result, ')']; - } - return parenthesize(result, currentPrecedence, precedence); - }, +// Don't raise the hwm > 128MB +var MAX_HWM = 0x800000; +function roundUpToNextPowerOf2(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + for (var p = 1; p < 32; p <<= 1) n |= n >> p; + n++; + } + return n; +} - CallExpression: function (expr, precedence, flags) { - var result, i, iz; - // F_ALLOW_UNPARATH_NEW becomes false. - result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; - result.push('('); - for (i = 0, iz = expr['arguments'].length; i < iz; ++i) { - result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); - if (i + 1 < iz) { - result.push(',' + space); - } - } - result.push(')'); +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) + return 0; - if (!(flags & F_ALLOW_CALL)) { - return ['(', result, ')']; - } - return parenthesize(result, Precedence.Call, precedence); - }, + if (state.objectMode) + return n === 0 ? 0 : 1; - NewExpression: function (expr, precedence, flags) { - var result, length, i, iz, itemFlags; - length = expr['arguments'].length; + if (isNaN(n) || n === null) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) + return state.buffer[0].length; + else + return state.length; + } - // F_ALLOW_CALL becomes false. - // F_ALLOW_UNPARATH_NEW may become false. - itemFlags = (flags & F_ALLOW_UNPARATH_NEW && !parentheses && length === 0) ? E_TFT : E_TFF; + if (n <= 0) + return 0; - result = join( - 'new', - this.generateExpression(expr.callee, Precedence.New, itemFlags) - ); + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) + state.highWaterMark = roundUpToNextPowerOf2(n); - if (!(flags & F_ALLOW_UNPARATH_NEW) || parentheses || length > 0) { - result.push('('); - for (i = 0, iz = length; i < iz; ++i) { - result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); - if (i + 1 < iz) { - result.push(',' + space); - } - } - result.push(')'); - } + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else + return state.length; + } - return parenthesize(result, Precedence.New, precedence); - }, + return n; +} - MemberExpression: function (expr, precedence, flags) { - var result, fragment; +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function(n) { + var state = this._readableState; + state.calledRead = true; + var nOrig = n; - // F_ALLOW_UNPARATH_NEW becomes false. - result = [this.generateExpression(expr.object, Precedence.Call, (flags & F_ALLOW_CALL) ? E_TTF : E_TFF)]; + if (typeof n !== 'number' || n > 0) + state.emittedReadable = false; - if (expr.computed) { - result.push('['); - result.push(this.generateExpression(expr.property, Precedence.Sequence, flags & F_ALLOW_CALL ? E_TTT : E_TFT)); - result.push(']'); - } else { - if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') { - fragment = toSourceNodeWhenNeeded(result).toString(); - // When the following conditions are all true, - // 1. No floating point - // 2. Don't have exponents - // 3. The last character is a decimal digit - // 4. Not hexadecimal OR octal number literal - // we should add a floating point. - if ( - fragment.indexOf('.') < 0 && - !/[eExX]/.test(fragment) && - esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && - !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0' - ) { - result.push(' '); - } - } - result.push('.'); - result.push(generateIdentifier(expr.property)); - } + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && + state.needReadable && + (state.length >= state.highWaterMark || state.ended)) { + emitReadable(this); + return null; + } - return parenthesize(result, Precedence.Member, precedence); - }, + n = howMuchToRead(n, state); - MetaProperty: function (expr, precedence, flags) { - var result; - result = []; - result.push(typeof expr.meta === "string" ? expr.meta : generateIdentifier(expr.meta)); - result.push('.'); - result.push(typeof expr.property === "string" ? expr.property : generateIdentifier(expr.property)); - return parenthesize(result, Precedence.Member, precedence); - }, + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) + endReadable(this); + return null; + } - UnaryExpression: function (expr, precedence, flags) { - var result, fragment, rightCharCode, leftSource, leftCharCode; - fragment = this.generateExpression(expr.argument, Precedence.Unary, E_TTT); + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. - if (space === '') { - result = join(expr.operator, fragment); - } else { - result = [expr.operator]; - if (expr.operator.length > 2) { - // delete, void, typeof - // get `typeof []`, not `typeof[]` - result = join(result, fragment); - } else { - // Prevent inserting spaces between operator and argument if it is unnecessary - // like, `!cond` - leftSource = toSourceNodeWhenNeeded(result).toString(); - leftCharCode = leftSource.charCodeAt(leftSource.length - 1); - rightCharCode = fragment.toString().charCodeAt(0); + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; - if (((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode) || - (esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode))) { - result.push(noEmptySpace()); - result.push(fragment); - } else { - result.push(fragment); - } - } - } - return parenthesize(result, Precedence.Unary, precedence); - }, - - YieldExpression: function (expr, precedence, flags) { - var result; - if (expr.delegate) { - result = 'yield*'; - } else { - result = 'yield'; - } - if (expr.argument) { - result = join( - result, - this.generateExpression(expr.argument, Precedence.Yield, E_TTT) - ); - } - return parenthesize(result, Precedence.Yield, precedence); - }, + // if we currently have less than the highWaterMark, then also read some + if (state.length - n <= state.highWaterMark) + doRead = true; - AwaitExpression: function (expr, precedence, flags) { - var result = join( - expr.all ? 'await*' : 'await', - this.generateExpression(expr.argument, Precedence.Await, E_TTT) - ); - return parenthesize(result, Precedence.Await, precedence); - }, + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) + doRead = false; - UpdateExpression: function (expr, precedence, flags) { - if (expr.prefix) { - return parenthesize( - [ - expr.operator, - this.generateExpression(expr.argument, Precedence.Unary, E_TTT) - ], - Precedence.Unary, - precedence - ); - } - return parenthesize( - [ - this.generateExpression(expr.argument, Precedence.Postfix, E_TTT), - expr.operator - ], - Precedence.Postfix, - precedence - ); - }, + if (doRead) { + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) + state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } - FunctionExpression: function (expr, precedence, flags) { - var result = [ - generateAsyncPrefix(expr, true), - 'function' - ]; - if (expr.id) { - result.push(generateStarSuffix(expr) || noEmptySpace()); - result.push(generateIdentifier(expr.id)); - } else { - result.push(generateStarSuffix(expr) || space); - } - result.push(this.generateFunctionBody(expr)); - return result; - }, + // If _read called its callback synchronously, then `reading` + // will be false, and we need to re-evaluate how much data we + // can return to the user. + if (doRead && !state.reading) + n = howMuchToRead(nOrig, state); - ArrayPattern: function (expr, precedence, flags) { - return this.ArrayExpression(expr, precedence, flags, true); - }, + var ret; + if (n > 0) + ret = fromList(n, state); + else + ret = null; - ArrayExpression: function (expr, precedence, flags, isPattern) { - var result, multiline, that = this; - if (!expr.elements.length) { - return '[]'; - } - multiline = isPattern ? false : expr.elements.length > 1; - result = ['[', multiline ? newline : '']; - withIndent(function (indent) { - var i, iz; - for (i = 0, iz = expr.elements.length; i < iz; ++i) { - if (!expr.elements[i]) { - if (multiline) { - result.push(indent); - } - if (i + 1 === iz) { - result.push(','); - } - } else { - result.push(multiline ? indent : ''); - result.push(that.generateExpression(expr.elements[i], Precedence.Assignment, E_TTT)); - } - if (i + 1 < iz) { - result.push(',' + (multiline ? newline : space)); - } - } - }); - if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : ''); - result.push(']'); - return result; - }, + if (ret === null) { + state.needReadable = true; + n = 0; + } - RestElement: function(expr, precedence, flags) { - return '...' + this.generatePattern(expr.argument); - }, + state.length -= n; - ClassExpression: function (expr, precedence, flags) { - var result, fragment; - result = ['class']; - if (expr.id) { - result = join(result, this.generateExpression(expr.id, Precedence.Sequence, E_TTT)); - } - if (expr.superClass) { - fragment = join('extends', this.generateExpression(expr.superClass, Precedence.Unary, E_TTT)); - result = join(result, fragment); - } - result.push(space); - result.push(this.generateStatement(expr.body, S_TFFT)); - return result; - }, + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) + state.needReadable = true; - MethodDefinition: function (expr, precedence, flags) { - var result, fragment; - if (expr['static']) { - result = ['static' + space]; - } else { - result = []; - } - if (expr.kind === 'get' || expr.kind === 'set') { - fragment = [ - join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)), - this.generateFunctionBody(expr.value) - ]; - } else { - fragment = [ - generateMethodPrefix(expr), - this.generatePropertyKey(expr.key, expr.computed), - this.generateFunctionBody(expr.value) - ]; - } - return join(result, fragment); - }, + // If we happened to read() exactly the remaining amount in the + // buffer, and the EOF has been seen at this point, then make sure + // that we emit 'end' on the very next tick. + if (state.ended && !state.endEmitted && state.length === 0) + endReadable(this); - Property: function (expr, precedence, flags) { - if (expr.kind === 'get' || expr.kind === 'set') { - return [ - expr.kind, noEmptySpace(), - this.generatePropertyKey(expr.key, expr.computed), - this.generateFunctionBody(expr.value) - ]; - } + return ret; +}; - if (expr.shorthand) { - if (expr.value.type === "AssignmentPattern") { - return this.AssignmentPattern(expr.value, Precedence.Sequence, E_TTT); - } - return this.generatePropertyKey(expr.key, expr.computed); - } +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && + 'string' !== typeof chunk && + chunk !== null && + chunk !== undefined && + !state.objectMode && + !er) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} - if (expr.method) { - return [ - generateMethodPrefix(expr), - this.generatePropertyKey(expr.key, expr.computed), - this.generateFunctionBody(expr.value) - ]; - } - return [ - this.generatePropertyKey(expr.key, expr.computed), - ':' + space, - this.generateExpression(expr.value, Precedence.Assignment, E_TTT) - ]; - }, +function onEofChunk(stream, state) { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; - ObjectExpression: function (expr, precedence, flags) { - var multiline, result, fragment, that = this; + // if we've ended and we have some data left, then emit + // 'readable' now to make sure it gets picked up. + if (state.length > 0) + emitReadable(stream); + else + endReadable(stream); +} - if (!expr.properties.length) { - return '{}'; - } - multiline = expr.properties.length > 1; +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (state.emittedReadable) + return; - withIndent(function () { - fragment = that.generateExpression(expr.properties[0], Precedence.Sequence, E_TTT); - }); + state.emittedReadable = true; + if (state.sync) + setImmediate(function() { + emitReadable_(stream); + }); + else + emitReadable_(stream); +} - if (!multiline) { - // issues 4 - // Do not transform from - // dejavu.Class.declare({ - // method2: function () {} - // }); - // to - // dejavu.Class.declare({method2: function () { - // }}); - if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { - return [ '{', space, fragment, space, '}' ]; - } - } +function emitReadable_(stream) { + stream.emit('readable'); +} - withIndent(function (indent) { - var i, iz; - result = [ '{', newline, indent, fragment ]; - if (multiline) { - result.push(',' + newline); - for (i = 1, iz = expr.properties.length; i < iz; ++i) { - result.push(indent); - result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); - if (i + 1 < iz) { - result.push(',' + newline); - } - } - } - }); +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + setImmediate(function() { + maybeReadMore_(stream, state); + }); + } +} - if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(base); - result.push('}'); - return result; - }, +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && + state.length < state.highWaterMark) { + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + else + len = state.length; + } + state.readingMore = false; +} - AssignmentPattern: function(expr, precedence, flags) { - return this.generateAssignment(expr.left, expr.right, '=', precedence, flags); - }, +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function(n) { + this.emit('error', new Error('not implemented')); +}; - ObjectPattern: function (expr, precedence, flags) { - var result, i, iz, multiline, property, that = this; - if (!expr.properties.length) { - return '{}'; - } +Readable.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state = this._readableState; - multiline = false; - if (expr.properties.length === 1) { - property = expr.properties[0]; - if ( - property.type === Syntax.Property - && property.value.type !== Syntax.Identifier - ) { - multiline = true; - } - } else { - for (i = 0, iz = expr.properties.length; i < iz; ++i) { - property = expr.properties[i]; - if ( - property.type === Syntax.Property - && !property.shorthand - ) { - multiline = true; - break; - } - } - } - result = ['{', multiline ? newline : '' ]; + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; - withIndent(function (indent) { - var i, iz; - for (i = 0, iz = expr.properties.length; i < iz; ++i) { - result.push(multiline ? indent : ''); - result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); - if (i + 1 < iz) { - result.push(',' + (multiline ? newline : space)); - } - } - }); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && + dest !== process.stdout && + dest !== process.stderr; - if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { - result.push(newline); - } - result.push(multiline ? base : ''); - result.push('}'); - return result; - }, + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) + setImmediate(endFn); + else + src.once('end', endFn); - ThisExpression: function (expr, precedence, flags) { - return 'this'; - }, + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + if (readable !== src) return; + cleanup(); + } - Super: function (expr, precedence, flags) { - return 'super'; - }, + function onend() { + dest.end(); + } - Identifier: function (expr, precedence, flags) { - return generateIdentifier(expr); - }, + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); - ImportDefaultSpecifier: function (expr, precedence, flags) { - return generateIdentifier(expr.id || expr.local); - }, + function cleanup() { + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); - ImportNamespaceSpecifier: function (expr, precedence, flags) { - var result = ['*']; - var id = expr.id || expr.local; - if (id) { - result.push(space + 'as' + noEmptySpace() + generateIdentifier(id)); - } - return result; - }, + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (!dest._writableState || dest._writableState.needDrain) + ondrain(); + } - ImportSpecifier: function (expr, precedence, flags) { - var imported = expr.imported; - var result = [ imported.name ]; - var local = expr.local; - if (local && local.name !== imported.name) { - result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(local)); - } - return result; - }, + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + // check for listeners before emit removes one-time listeners. + var errListeners = EE.listenerCount(dest, 'error'); + function onerror(er) { + unpipe(); + if (errListeners === 0 && EE.listenerCount(dest, 'error') === 0) + dest.emit('error', er); + } + dest.once('error', onerror); - ExportSpecifier: function (expr, precedence, flags) { - var local = expr.local; - var result = [ local.name ]; - var exported = expr.exported; - if (exported && exported.name !== local.name) { - result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(exported)); - } - return result; - }, + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); - Literal: function (expr, precedence, flags) { - var raw; - if (expr.hasOwnProperty('raw') && parse && extra.raw) { - try { - raw = parse(expr.raw).body[0].expression; - if (raw.type === Syntax.Literal) { - if (raw.value === expr.value) { - return expr.raw; - } - } - } catch (e) { - // not use raw property - } - } + function unpipe() { + src.unpipe(dest); + } - if (expr.regex) { - return '/' + expr.regex.pattern + '/' + expr.regex.flags; - } + // tell the dest that it's being piped to + dest.emit('pipe', src); - if (expr.value === null) { - return 'null'; - } - - if (typeof expr.value === 'string') { - return escapeString(expr.value); - } + // start the flow if it hasn't been started already. + if (!state.flowing) { + // the handler that waits for readable events after all + // the data gets sucked out in flow. + // This would be easier to follow with a .once() handler + // in flow(), but that is too slow. + this.on('readable', pipeOnReadable); - if (typeof expr.value === 'number') { - return generateNumber(expr.value); - } + state.flowing = true; + setImmediate(function() { + flow(src); + }); + } - if (typeof expr.value === 'boolean') { - return expr.value ? 'true' : 'false'; - } + return dest; +}; - return generateRegExp(expr.value); - }, +function pipeOnDrain(src) { + return function() { + var dest = this; + var state = src._readableState; + state.awaitDrain--; + if (state.awaitDrain === 0) + flow(src); + }; +} - GeneratorExpression: function (expr, precedence, flags) { - return this.ComprehensionExpression(expr, precedence, flags); - }, +function flow(src) { + var state = src._readableState; + var chunk; + state.awaitDrain = 0; - ComprehensionExpression: function (expr, precedence, flags) { - // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...] - // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6 + function write(dest, i, list) { + var written = dest.write(chunk); + if (false === written) { + state.awaitDrain++; + } + } - var result, i, iz, fragment, that = this; - result = (expr.type === Syntax.GeneratorExpression) ? ['('] : ['[']; + while (state.pipesCount && null !== (chunk = src.read())) { - if (extra.moz.comprehensionExpressionStartsWithAssignment) { - fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); - result.push(fragment); - } + if (state.pipesCount === 1) + write(state.pipes, 0, null); + else + forEach(state.pipes, write); - if (expr.blocks) { - withIndent(function () { - for (i = 0, iz = expr.blocks.length; i < iz; ++i) { - fragment = that.generateExpression(expr.blocks[i], Precedence.Sequence, E_TTT); - if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) { - result = join(result, fragment); - } else { - result.push(fragment); - } - } - }); - } + src.emit('data', chunk); - if (expr.filter) { - result = join(result, 'if' + space); - fragment = this.generateExpression(expr.filter, Precedence.Sequence, E_TTT); - result = join(result, [ '(', fragment, ')' ]); - } + // if anyone needs a drain, then we have to wait for that. + if (state.awaitDrain > 0) + return; + } - if (!extra.moz.comprehensionExpressionStartsWithAssignment) { - fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); + // if every destination was unpiped, either before entering this + // function, or in the while loop, then stop flowing. + // + // NB: This is a pretty rare edge case. + if (state.pipesCount === 0) { + state.flowing = false; - result = join(result, fragment); - } + // if there were data event listeners added, then switch to old mode. + if (EE.listenerCount(src, 'data') > 0) + emitDataEvents(src); + return; + } - result.push((expr.type === Syntax.GeneratorExpression) ? ')' : ']'); - return result; - }, + // at this point, no one needed a drain, so we just ran out of data + // on the next readable event, start it over again. + state.ranOut = true; +} - ComprehensionBlock: function (expr, precedence, flags) { - var fragment; - if (expr.left.type === Syntax.VariableDeclaration) { - fragment = [ - expr.left.kind, noEmptySpace(), - this.generateStatement(expr.left.declarations[0], S_FFFF) - ]; - } else { - fragment = this.generateExpression(expr.left, Precedence.Call, E_TTT); - } +function pipeOnReadable() { + if (this._readableState.ranOut) { + this._readableState.ranOut = false; + flow(this); + } +} - fragment = join(fragment, expr.of ? 'of' : 'in'); - fragment = join(fragment, this.generateExpression(expr.right, Precedence.Sequence, E_TTT)); - return [ 'for' + space + '(', fragment, ')' ]; - }, +Readable.prototype.unpipe = function(dest) { + var state = this._readableState; - SpreadElement: function (expr, precedence, flags) { - return [ - '...', - this.generateExpression(expr.argument, Precedence.Assignment, E_TTT) - ]; - }, + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) + return this; - TaggedTemplateExpression: function (expr, precedence, flags) { - var itemFlags = E_TTF; - if (!(flags & F_ALLOW_CALL)) { - itemFlags = E_TFF; - } - var result = [ - this.generateExpression(expr.tag, Precedence.Call, itemFlags), - this.generateExpression(expr.quasi, Precedence.Primary, E_FFT) - ]; - return parenthesize(result, Precedence.TaggedTemplate, precedence); - }, + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) + return this; - TemplateElement: function (expr, precedence, flags) { - // Don't use "cooked". Since tagged template can use raw template - // representation. So if we do so, it breaks the script semantics. - return expr.value.raw; - }, + if (!dest) + dest = state.pipes; - TemplateLiteral: function (expr, precedence, flags) { - var result, i, iz; - result = [ '`' ]; - for (i = 0, iz = expr.quasis.length; i < iz; ++i) { - result.push(this.generateExpression(expr.quasis[i], Precedence.Primary, E_TTT)); - if (i + 1 < iz) { - result.push('${' + space); - result.push(this.generateExpression(expr.expressions[i], Precedence.Sequence, E_TTT)); - result.push(space + '}'); - } - } - result.push('`'); - return result; - }, + // got a match. + state.pipes = null; + state.pipesCount = 0; + this.removeListener('readable', pipeOnReadable); + state.flowing = false; + if (dest) + dest.emit('unpipe', this); + return this; + } - ModuleSpecifier: function (expr, precedence, flags) { - return this.Literal(expr, precedence, flags); - }, + // slow case. multiple pipe destinations. - ImportExpression: function(expr, precedence, flag) { - return parenthesize([ - 'import(', - this.generateExpression(expr.source, Precedence.Assignment, E_TTT), - ')' - ], Precedence.Call, precedence); - }, + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + this.removeListener('readable', pipeOnReadable); + state.flowing = false; - }; + for (var i = 0; i < len; i++) + dests[i].emit('unpipe', this); + return this; + } - merge(CodeGenerator.prototype, CodeGenerator.Expression); + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) + return this; - CodeGenerator.prototype.generateExpression = function (expr, precedence, flags) { - var result, type; + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) + state.pipes = state.pipes[0]; - type = expr.type || Syntax.Property; + dest.emit('unpipe', this); - if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { - return generateVerbatim(expr, precedence); - } + return this; +}; - result = this[type](expr, precedence, flags); +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + if (ev === 'data' && !this._readableState.flowing) + emitDataEvents(this); - if (extra.comment) { - result = addComments(expr, result); - } - return toSourceNodeWhenNeeded(result, expr); - }; + if (ev === 'readable' && this.readable) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + this.read(0); + } else if (state.length) { + emitReadable(this, state); + } + } + } - CodeGenerator.prototype.generateStatement = function (stmt, flags) { - var result, - fragment; + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; - result = this[stmt.type](stmt, flags); +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function() { + emitDataEvents(this); + this.read(0); + this.emit('resume'); +}; - // Attach comments +Readable.prototype.pause = function() { + emitDataEvents(this, true); + this.emit('pause'); +}; - if (extra.comment) { - result = addComments(stmt, result); - } +function emitDataEvents(stream, startPaused) { + var state = stream._readableState; - fragment = toSourceNodeWhenNeeded(result).toString(); - if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\n') { - result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, '') : fragment.replace(/\s+$/, ''); - } + if (state.flowing) { + // https://github.com/isaacs/readable-stream/issues/16 + throw new Error('Cannot switch to old mode now.'); + } - return toSourceNodeWhenNeeded(result, stmt); - }; + var paused = startPaused || false; + var readable = false; - function generateInternal(node) { - var codegen; + // convert to an old-style stream. + stream.readable = true; + stream.pipe = Stream.prototype.pipe; + stream.on = stream.addListener = Stream.prototype.on; - codegen = new CodeGenerator(); - if (isStatement(node)) { - return codegen.generateStatement(node, S_TFFF); - } + stream.on('readable', function() { + readable = true; - if (isExpression(node)) { - return codegen.generateExpression(node, Precedence.Sequence, E_TTT); - } + var c; + while (!paused && (null !== (c = stream.read()))) + stream.emit('data', c); - throw new Error('Unknown node type: ' + node.type); + if (c === null) { + readable = false; + stream._readableState.needReadable = true; } + }); - function generate(node, options) { - var defaultOptions = getDefaultOptions(), result, pair; + stream.pause = function() { + paused = true; + this.emit('pause'); + }; - if (options != null) { - // Obsolete options - // - // `options.indent` - // `options.base` - // - // Instead of them, we can use `option.format.indent`. - if (typeof options.indent === 'string') { - defaultOptions.format.indent.style = options.indent; - } - if (typeof options.base === 'number') { - defaultOptions.format.indent.base = options.base; - } - options = updateDeeply(defaultOptions, options); - indent = options.format.indent.style; - if (typeof options.base === 'string') { - base = options.base; - } else { - base = stringRepeat(indent, options.format.indent.base); - } - } else { - options = defaultOptions; - indent = options.format.indent.style; - base = stringRepeat(indent, options.format.indent.base); - } - json = options.format.json; - renumber = options.format.renumber; - hexadecimal = json ? false : options.format.hexadecimal; - quotes = json ? 'double' : options.format.quotes; - escapeless = options.format.escapeless; - newline = options.format.newline; - space = options.format.space; - if (options.format.compact) { - newline = space = indent = base = ''; - } - parentheses = options.format.parentheses; - semicolons = options.format.semicolons; - safeConcatenation = options.format.safeConcatenation; - directive = options.directive; - parse = json ? null : options.parse; - sourceMap = options.sourceMap; - sourceCode = options.sourceCode; - preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null; - extra = options; + stream.resume = function() { + paused = false; + if (readable) + setImmediate(function() { + stream.emit('readable'); + }); + else + this.read(0); + this.emit('resume'); + }; - if (sourceMap) { - if (!exports.browser) { - // We assume environment is node.js - // And prevent from including source-map by browserify - SourceNode = require('source-map').SourceNode; - } else { - SourceNode = global.sourceMap.SourceNode; - } - } + // now make it start, just in case it hadn't already. + stream.emit('readable'); +} - result = generateInternal(node); +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function(stream) { + var state = this._readableState; + var paused = false; - if (!sourceMap) { - pair = {code: result.toString(), map: null}; - return options.sourceMapWithCode ? pair : pair.code; - } + var self = this; + stream.on('end', function() { + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) + self.push(chunk); + } + self.push(null); + }); - pair = result.toStringWithSourceMap({ - file: options.file, - sourceRoot: options.sourceMapRoot - }); + stream.on('data', function(chunk) { + if (state.decoder) + chunk = state.decoder.write(chunk); + if (!chunk || !state.objectMode && !chunk.length) + return; - if (options.sourceContent) { - pair.map.setSourceContent(options.sourceMap, - options.sourceContent); - } + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); - if (options.sourceMapWithCode) { - return pair; - } + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (typeof stream[i] === 'function' && + typeof this[i] === 'undefined') { + this[i] = function(method) { return function() { + return stream[method].apply(stream, arguments); + }}(i); + } + } - return pair.map.toString(); + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function(ev) { + stream.on(ev, function (x) { + return self.emit.apply(self, ev, x); + }); + }); + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function(n) { + if (paused) { + paused = false; + stream.resume(); } + }; - FORMAT_MINIFY = { - indent: { - style: '', - base: 0 - }, - renumber: true, - hexadecimal: true, - quotes: 'auto', - escapeless: true, - compact: true, - parentheses: false, - semicolons: false - }; + return self; +}; - FORMAT_DEFAULTS = getDefaultOptions().format; - exports.version = require('./package.json').version; - exports.generate = generate; - exports.attachComments = estraverse.attachComments; - exports.Precedence = updateDeeply({}, Precedence); - exports.browser = false; - exports.FORMAT_MINIFY = FORMAT_MINIFY; - exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/escodegen.js","/node_modules/escodegen") -},{"./package.json":68,"FWaASH":50,"buffer":52,"estraverse":55,"esutils":72,"source-map":67}],55:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2012-2013 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat +// exposed for testing purposes only. +Readable._fromList = fromList; - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + // nothing in the list, definitely empty. + if (list.length === 0) + return null; - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -/*jslint vars:false, bitwise:true*/ -/*jshint indent:4*/ -/*global exports:true*/ -(function clone(exports) { - 'use strict'; - - var Syntax, - VisitorOption, - VisitorKeys, - BREAK, - SKIP, - REMOVE; - - function deepCopy(obj) { - var ret = {}, key, val; - for (key in obj) { - if (obj.hasOwnProperty(key)) { - val = obj[key]; - if (typeof val === 'object' && val !== null) { - ret[key] = deepCopy(val); - } else { - ret[key] = val; - } - } - } - return ret; - } + if (length === 0) + ret = null; + else if (objectMode) + ret = list.shift(); + else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) + ret = list.join(''); + else + ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) + ret = ''; + else + ret = new Buffer(n); - // based on LLVM libc++ upper_bound / lower_bound - // MIT License + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var buf = list[0]; + var cpy = Math.min(n - c, buf.length); - function upperBound(array, func) { - var diff, len, i, current; + if (stringMode) + ret += buf.slice(0, cpy); + else + buf.copy(ret, c, 0, cpy); - len = array.length; - i = 0; + if (cpy < buf.length) + list[0] = buf.slice(cpy); + else + list.shift(); - while (len) { - diff = len >>> 1; - current = i + diff; - if (func(array[current])) { - len = diff; - } else { - i = current + 1; - len -= diff + 1; - } - } - return i; + c += cpy; + } } + } - Syntax = { - AssignmentExpression: 'AssignmentExpression', - AssignmentPattern: 'AssignmentPattern', - ArrayExpression: 'ArrayExpression', - ArrayPattern: 'ArrayPattern', - ArrowFunctionExpression: 'ArrowFunctionExpression', - AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7. - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ClassBody: 'ClassBody', - ClassDeclaration: 'ClassDeclaration', - ClassExpression: 'ClassExpression', - ComprehensionBlock: 'ComprehensionBlock', // CAUTION: It's deferred to ES7. - ComprehensionExpression: 'ComprehensionExpression', // CAUTION: It's deferred to ES7. - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DebuggerStatement: 'DebuggerStatement', - DirectiveStatement: 'DirectiveStatement', - DoWhileStatement: 'DoWhileStatement', - EmptyStatement: 'EmptyStatement', - ExportAllDeclaration: 'ExportAllDeclaration', - ExportDefaultDeclaration: 'ExportDefaultDeclaration', - ExportNamedDeclaration: 'ExportNamedDeclaration', - ExportSpecifier: 'ExportSpecifier', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - ForOfStatement: 'ForOfStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - GeneratorExpression: 'GeneratorExpression', // CAUTION: It's deferred to ES7. - Identifier: 'Identifier', - IfStatement: 'IfStatement', - ImportExpression: 'ImportExpression', - ImportDeclaration: 'ImportDeclaration', - ImportDefaultSpecifier: 'ImportDefaultSpecifier', - ImportNamespaceSpecifier: 'ImportNamespaceSpecifier', - ImportSpecifier: 'ImportSpecifier', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - MetaProperty: 'MetaProperty', - MethodDefinition: 'MethodDefinition', - ModuleSpecifier: 'ModuleSpecifier', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - ObjectPattern: 'ObjectPattern', - Program: 'Program', - Property: 'Property', - RestElement: 'RestElement', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SpreadElement: 'SpreadElement', - Super: 'Super', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - TaggedTemplateExpression: 'TaggedTemplateExpression', - TemplateElement: 'TemplateElement', - TemplateLiteral: 'TemplateLiteral', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement', - YieldExpression: 'YieldExpression' - }; + return ret; +} - VisitorKeys = { - AssignmentExpression: ['left', 'right'], - AssignmentPattern: ['left', 'right'], - ArrayExpression: ['elements'], - ArrayPattern: ['elements'], - ArrowFunctionExpression: ['params', 'body'], - AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7. - BlockStatement: ['body'], - BinaryExpression: ['left', 'right'], - BreakStatement: ['label'], - CallExpression: ['callee', 'arguments'], - CatchClause: ['param', 'body'], - ClassBody: ['body'], - ClassDeclaration: ['id', 'superClass', 'body'], - ClassExpression: ['id', 'superClass', 'body'], - ComprehensionBlock: ['left', 'right'], // CAUTION: It's deferred to ES7. - ComprehensionExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7. - ConditionalExpression: ['test', 'consequent', 'alternate'], - ContinueStatement: ['label'], - DebuggerStatement: [], - DirectiveStatement: [], - DoWhileStatement: ['body', 'test'], - EmptyStatement: [], - ExportAllDeclaration: ['source'], - ExportDefaultDeclaration: ['declaration'], - ExportNamedDeclaration: ['declaration', 'specifiers', 'source'], - ExportSpecifier: ['exported', 'local'], - ExpressionStatement: ['expression'], - ForStatement: ['init', 'test', 'update', 'body'], - ForInStatement: ['left', 'right', 'body'], - ForOfStatement: ['left', 'right', 'body'], - FunctionDeclaration: ['id', 'params', 'body'], - FunctionExpression: ['id', 'params', 'body'], - GeneratorExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7. - Identifier: [], - IfStatement: ['test', 'consequent', 'alternate'], - ImportExpression: ['source'], - ImportDeclaration: ['specifiers', 'source'], - ImportDefaultSpecifier: ['local'], - ImportNamespaceSpecifier: ['local'], - ImportSpecifier: ['imported', 'local'], - Literal: [], - LabeledStatement: ['label', 'body'], - LogicalExpression: ['left', 'right'], - MemberExpression: ['object', 'property'], - MetaProperty: ['meta', 'property'], - MethodDefinition: ['key', 'value'], - ModuleSpecifier: [], - NewExpression: ['callee', 'arguments'], - ObjectExpression: ['properties'], - ObjectPattern: ['properties'], - Program: ['body'], - Property: ['key', 'value'], - RestElement: [ 'argument' ], - ReturnStatement: ['argument'], - SequenceExpression: ['expressions'], - SpreadElement: ['argument'], - Super: [], - SwitchStatement: ['discriminant', 'cases'], - SwitchCase: ['test', 'consequent'], - TaggedTemplateExpression: ['tag', 'quasi'], - TemplateElement: [], - TemplateLiteral: ['quasis', 'expressions'], - ThisExpression: [], - ThrowStatement: ['argument'], - TryStatement: ['block', 'handler', 'finalizer'], - UnaryExpression: ['argument'], - UpdateExpression: ['argument'], - VariableDeclaration: ['declarations'], - VariableDeclarator: ['id', 'init'], - WhileStatement: ['test', 'body'], - WithStatement: ['object', 'body'], - YieldExpression: ['argument'] - }; +function endReadable(stream) { + var state = stream._readableState; - // unique id - BREAK = {}; - SKIP = {}; - REMOVE = {}; + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) + throw new Error('endReadable called on non-empty stream'); - VisitorOption = { - Break: BREAK, - Skip: SKIP, - Remove: REMOVE - }; + if (!state.endEmitted && state.calledRead) { + state.ended = true; + setImmediate(function() { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } + }); + } +} - function Reference(parent, key) { - this.parent = parent; - this.key = key; - } +function forEach (xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} - Reference.prototype.replace = function replace(node) { - this.parent[this.key] = node; - }; +function indexOf (xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} - Reference.prototype.remove = function remove() { - if (Array.isArray(this.parent)) { - this.parent.splice(this.key, 1); - return true; - } else { - this.replace(null); - return false; - } - }; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/readable.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./index.js":61,"buffer":57,"events":58,"inherits":91,"lYpoI2":59,"process/browser.js":62,"string_decoder":67}],65:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - function Element(node, path, wrap, ref) { - this.node = node; - this.path = path; - this.wrap = wrap; - this.ref = ref; - } +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. - function Controller() { } +module.exports = Transform; - // API: - // return property path array from root to current node - Controller.prototype.path = function path() { - var i, iz, j, jz, result, element; +var Duplex = require('./duplex.js'); +var inherits = require('inherits'); +inherits(Transform, Duplex); - function addToPath(result, path) { - if (Array.isArray(path)) { - for (j = 0, jz = path.length; j < jz; ++j) { - result.push(path[j]); - } - } else { - result.push(path); - } - } - // root node - if (!this.__current.path) { - return null; - } +function TransformState(options, stream) { + this.afterTransform = function(er, data) { + return afterTransform(stream, er, data); + }; - // first node is sentinel, second node is root element - result = []; - for (i = 2, iz = this.__leavelist.length; i < iz; ++i) { - element = this.__leavelist[i]; - addToPath(result, element.path); - } - addToPath(result, this.__current.path); - return result; - }; + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; +} - // API: - // return type of current node - Controller.prototype.type = function () { - var node = this.current(); - return node.type || this.__current.wrap; - }; +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; - // API: - // return array of parent elements - Controller.prototype.parents = function parents() { - var i, iz, result; + var cb = ts.writecb; - // first node is sentinel - result = []; - for (i = 1, iz = this.__leavelist.length; i < iz; ++i) { - result.push(this.__leavelist[i].node); - } + if (!cb) + return stream.emit('error', new Error('no writecb in Transform class')); - return result; - }; + ts.writechunk = null; + ts.writecb = null; - // API: - // return current node - Controller.prototype.current = function current() { - return this.__current.node; - }; + if (data !== null && data !== undefined) + stream.push(data); - Controller.prototype.__execute = function __execute(callback, element) { - var previous, result; + if (cb) + cb(er); - result = undefined; + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} - previous = this.__current; - this.__current = element; - this.__state = null; - if (callback) { - result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node); - } - this.__current = previous; - return result; - }; +function Transform(options) { + if (!(this instanceof Transform)) + return new Transform(options); - // API: - // notify control skip / break - Controller.prototype.notify = function notify(flag) { - this.__state = flag; - }; + Duplex.call(this, options); - // API: - // skip child nodes of current node - Controller.prototype.skip = function () { - this.notify(SKIP); - }; + var ts = this._transformState = new TransformState(options, this); - // API: - // break traversals - Controller.prototype['break'] = function () { - this.notify(BREAK); - }; + // when the writable side finishes, then flush out anything remaining. + var stream = this; - // API: - // remove node - Controller.prototype.remove = function () { - this.notify(REMOVE); - }; + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - Controller.prototype.__initialize = function(root, visitor) { - this.visitor = visitor; - this.root = root; - this.__worklist = []; - this.__leavelist = []; - this.__current = null; - this.__state = null; - this.__fallback = null; - if (visitor.fallback === 'iteration') { - this.__fallback = Object.keys; - } else if (typeof visitor.fallback === 'function') { - this.__fallback = visitor.fallback; - } + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; - this.__keys = VisitorKeys; - if (visitor.keys) { - this.__keys = Object.assign(Object.create(this.__keys), visitor.keys); - } - }; + this.once('finish', function() { + if ('function' === typeof this._flush) + this._flush(function(er) { + done(stream, er); + }); + else + done(stream); + }); +} - function isNode(node) { - if (node == null) { - return false; - } - return typeof node === 'object' && typeof node.type === 'string'; - } +Transform.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; - function isProperty(nodeType, key) { - return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key; - } +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function(chunk, encoding, cb) { + throw new Error('not implemented'); +}; - Controller.prototype.traverse = function traverse(root, visitor) { - var worklist, - leavelist, - element, - node, - nodeType, - ret, - key, - current, - current2, - candidates, - candidate, - sentinel; +Transform.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || + rs.needReadable || + rs.length < rs.highWaterMark) + this._read(rs.highWaterMark); + } +}; - this.__initialize(root, visitor); +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function(n) { + var ts = this._transformState; - sentinel = {}; + if (ts.writechunk && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; - // initialize - worklist.push(new Element(root, null, null, null)); - leavelist.push(new Element(null, null, null, null)); +function done(stream, er) { + if (er) + return stream.emit('error', er); - while (worklist.length) { - element = worklist.pop(); + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var rs = stream._readableState; + var ts = stream._transformState; - if (element === sentinel) { - element = leavelist.pop(); + if (ws.length) + throw new Error('calling transform done when ws.length != 0'); - ret = this.__execute(visitor.leave, element); + if (ts.transforming) + throw new Error('calling transform done when still transforming'); - if (this.__state === BREAK || ret === BREAK) { - return; - } - continue; - } + return stream.push(null); +} - if (element.node) { +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/transform.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./duplex.js":60,"buffer":57,"inherits":91,"lYpoI2":59}],66:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - ret = this.__execute(visitor.enter, element); +// A bit simpler than readable streams. +// Implement an async ._write(chunk, cb), and it'll handle all +// the drain event emission and buffering. - if (this.__state === BREAK || ret === BREAK) { - return; - } +module.exports = Writable; +Writable.WritableState = WritableState; - worklist.push(sentinel); - leavelist.push(element); +var isUint8Array = typeof Uint8Array !== 'undefined' + ? function (x) { return x instanceof Uint8Array } + : function (x) { + return x && x.constructor && x.constructor.name === 'Uint8Array' + } +; +var isArrayBuffer = typeof ArrayBuffer !== 'undefined' + ? function (x) { return x instanceof ArrayBuffer } + : function (x) { + return x && x.constructor && x.constructor.name === 'ArrayBuffer' + } +; - if (this.__state === SKIP || ret === SKIP) { - continue; - } +var inherits = require('inherits'); +var Stream = require('./index.js'); +var setImmediate = require('process/browser.js').nextTick; +var Buffer = require('buffer').Buffer; - node = element.node; - nodeType = node.type || element.wrap; - candidates = this.__keys[nodeType]; - if (!candidates) { - if (this.__fallback) { - candidates = this.__fallback(node); - } else { - throw new Error('Unknown node type ' + nodeType + '.'); - } - } +inherits(Writable, Stream); - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; +} - if (Array.isArray(candidate)) { - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if (isProperty(nodeType, candidates[current])) { - element = new Element(candidate[current2], [key, current2], 'Property', null); - } else if (isNode(candidate[current2])) { - element = new Element(candidate[current2], [key, current2], null, null); - } else { - continue; - } - worklist.push(element); - } - } else if (isNode(candidate)) { - worklist.push(new Element(candidate, key, null, null)); - } - } - } - } - }; +function WritableState(options, stream) { + options = options || {}; - Controller.prototype.replace = function replace(root, visitor) { - var worklist, - leavelist, - node, - nodeType, - target, - element, - current, - current2, - candidates, - candidate, - sentinel, - outer, - key; + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - function removeElem(element) { - var i, - key, - nextElem, - parent; + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; - if (element.ref.remove()) { - // When the reference is an element of an array. - key = element.ref.key; - parent = element.ref.parent; + // cast to ints. + this.highWaterMark = ~~this.highWaterMark; - // If removed from array, then decrease following items' keys. - i = worklist.length; - while (i--) { - nextElem = worklist[i]; - if (nextElem.ref && nextElem.ref.parent === parent) { - if (nextElem.ref.key < key) { - break; - } - --nextElem.ref.key; - } - } - } - } + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - this.__initialize(root, visitor); + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; - sentinel = {}; + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - // reference - worklist = this.__worklist; - leavelist = this.__leavelist; + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; - // initialize - outer = { - root: root - }; - element = new Element(root, null, null, new Reference(outer, 'root')); - worklist.push(element); - leavelist.push(element); + // a flag to see when we're in the middle of a write. + this.writing = false; - while (worklist.length) { - element = worklist.pop(); + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, becuase any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; - if (element === sentinel) { - element = leavelist.pop(); + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - target = this.__execute(visitor.leave, element); + // the callback that's passed to _write(chunk,cb) + this.onwrite = function(er) { + onwrite(stream, er); + }; - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) { - // replace - element.ref.replace(target); - } + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; - if (this.__state === REMOVE || target === REMOVE) { - removeElem(element); - } + // the amount that is being written when _write is called. + this.writelen = 0; - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } - continue; - } + this.buffer = []; +} - target = this.__execute(visitor.enter, element); +function Writable(options) { + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Stream.Duplex)) + return new Writable(options); - // node may be replaced with null, - // so distinguish between undefined and null in this place - if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) { - // replace - element.ref.replace(target); - element.node = target; - } + this._writableState = new WritableState(options, this); - if (this.__state === REMOVE || target === REMOVE) { - removeElem(element); - element.node = null; - } + // legacy. + this.writable = true; - if (this.__state === BREAK || target === BREAK) { - return outer.root; - } + Stream.call(this); +} - // node may be null - node = element.node; - if (!node) { - continue; - } +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function() { + this.emit('error', new Error('Cannot pipe. Not readable.')); +}; - worklist.push(sentinel); - leavelist.push(element); - if (this.__state === SKIP || target === SKIP) { - continue; - } +function writeAfterEnd(stream, state, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + setImmediate(function() { + cb(er); + }); +} - nodeType = node.type || element.wrap; - candidates = this.__keys[nodeType]; - if (!candidates) { - if (this.__fallback) { - candidates = this.__fallback(node); - } else { - throw new Error('Unknown node type ' + nodeType + '.'); - } - } +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + if (!Buffer.isBuffer(chunk) && + 'string' !== typeof chunk && + chunk !== null && + chunk !== undefined && + !state.objectMode) { + var er = new TypeError('Invalid non-string/buffer chunk'); + stream.emit('error', er); + setImmediate(function() { + cb(er); + }); + valid = false; + } + return valid; +} - current = candidates.length; - while ((current -= 1) >= 0) { - key = candidates[current]; - candidate = node[key]; - if (!candidate) { - continue; - } +Writable.prototype.write = function(chunk, encoding, cb) { + var state = this._writableState; + var ret = false; - if (Array.isArray(candidate)) { - current2 = candidate.length; - while ((current2 -= 1) >= 0) { - if (!candidate[current2]) { - continue; - } - if (isProperty(nodeType, candidates[current])) { - element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2)); - } else if (isNode(candidate[current2])) { - element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2)); - } else { - continue; - } - worklist.push(element); - } - } else if (isNode(candidate)) { - worklist.push(new Element(candidate, key, null, new Reference(node, key))); - } - } - } + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } - return outer.root; - }; + if (!Buffer.isBuffer(chunk) && isUint8Array(chunk)) + chunk = new Buffer(chunk); + if (isArrayBuffer(chunk) && typeof Uint8Array !== 'undefined') + chunk = new Buffer(new Uint8Array(chunk)); + + if (Buffer.isBuffer(chunk)) + encoding = 'buffer'; + else if (!encoding) + encoding = state.defaultEncoding; - function traverse(root, visitor) { - var controller = new Controller(); - return controller.traverse(root, visitor); - } + if (typeof cb !== 'function') + cb = function() {}; - function replace(root, visitor) { - var controller = new Controller(); - return controller.replace(root, visitor); - } + if (state.ended) + writeAfterEnd(this, state, cb); + else if (validChunk(this, state, chunk, cb)) + ret = writeOrBuffer(this, state, chunk, encoding, cb); - function extendCommentRange(comment, tokens) { - var target; + return ret; +}; - target = upperBound(tokens, function search(token) { - return token.range[0] > comment.range[0]; - }); +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && + state.decodeStrings !== false && + typeof chunk === 'string') { + chunk = new Buffer(chunk, encoding); + } + return chunk; +} - comment.extendedRange = [comment.range[0], comment.range[1]]; +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); + var len = state.objectMode ? 1 : chunk.length; - if (target !== tokens.length) { - comment.extendedRange[1] = tokens[target].range[0]; - } + state.length += len; - target -= 1; - if (target >= 0) { - comment.extendedRange[0] = tokens[target].range[1]; - } + var ret = state.length < state.highWaterMark; + state.needDrain = !ret; - return comment; - } + if (state.writing) + state.buffer.push(new WriteReq(chunk, encoding, cb)); + else + doWrite(stream, state, len, chunk, encoding, cb); - function attachComments(tree, providedComments, tokens) { - // At first, we should calculate extended comment ranges. - var comments = [], comment, len, i, cursor; + return ret; +} - if (!tree.range) { - throw new Error('attachComments needs range information'); - } +function doWrite(stream, state, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} - // tokens array is empty, we attach comments to tree as 'leadingComments' - if (!tokens.length) { - if (providedComments.length) { - for (i = 0, len = providedComments.length; i < len; i += 1) { - comment = deepCopy(providedComments[i]); - comment.extendedRange = [0, tree.range[0]]; - comments.push(comment); - } - tree.leadingComments = comments; - } - return tree; - } +function onwriteError(stream, state, sync, er, cb) { + if (sync) + setImmediate(function() { + cb(er); + }); + else + cb(er); - for (i = 0, len = providedComments.length; i < len; i += 1) { - comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens)); - } + stream.emit('error', er); +} - // This is based on John Freeman's implementation. - cursor = 0; - traverse(tree, { - enter: function (node) { - var comment; +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} - while (cursor < comments.length) { - comment = comments[cursor]; - if (comment.extendedRange[1] > node.range[0]) { - break; - } +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; - if (comment.extendedRange[1] === node.range[0]) { - if (!node.leadingComments) { - node.leadingComments = []; - } - node.leadingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } + onwriteStateUpdate(state); - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } + if (er) + onwriteError(stream, state, sync, er, cb); + else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(stream, state); - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); + if (!finished && !state.bufferProcessing && state.buffer.length) + clearBuffer(stream, state); - cursor = 0; - traverse(tree, { - leave: function (node) { - var comment; + if (sync) { + setImmediate(function() { + afterWrite(stream, state, finished, cb); + }); + } else { + afterWrite(stream, state, finished, cb); + } + } +} - while (cursor < comments.length) { - comment = comments[cursor]; - if (node.range[1] < comment.extendedRange[0]) { - break; - } +function afterWrite(stream, state, finished, cb) { + if (!finished) + onwriteDrain(stream, state); + cb(); + if (finished) + finishMaybe(stream, state); +} - if (node.range[1] === comment.extendedRange[0]) { - if (!node.trailingComments) { - node.trailingComments = []; - } - node.trailingComments.push(comment); - comments.splice(cursor, 1); - } else { - cursor += 1; - } - } +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} - // already out of owned node - if (cursor === comments.length) { - return VisitorOption.Break; - } - if (comments[cursor].extendedRange[0] > node.range[1]) { - return VisitorOption.Skip; - } - } - }); +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; - return tree; + for (var c = 0; c < state.buffer.length; c++) { + var entry = state.buffer[c]; + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, len, chunk, encoding, cb); + + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + c++; + break; } + } - exports.version = require('./package.json').version; - exports.Syntax = Syntax; - exports.traverse = traverse; - exports.replace = replace; - exports.attachComments = attachComments; - exports.VisitorKeys = VisitorKeys; - exports.VisitorOption = VisitorOption; - exports.Controller = Controller; - exports.cloneEnvironment = function () { return clone({}); }; + state.bufferProcessing = false; + if (c < state.buffer.length) + state.buffer = state.buffer.slice(c); + else + state.buffer.length = 0; +} - return exports; -}(exports)); -/* vim: set sw=4 ts=4 et tw=80 : */ +Writable.prototype._write = function(chunk, encoding, cb) { + cb(new Error('not implemented')); +}; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/estraverse/estraverse.js","/node_modules/escodegen/node_modules/estraverse") -},{"./package.json":56,"FWaASH":50,"buffer":52}],56:[function(require,module,exports){ -module.exports={ - "name": "estraverse", - "description": "ECMAScript JS AST traversal functions", - "homepage": "https://github.com/estools/estraverse", - "main": "estraverse.js", - "version": "4.3.0", - "engines": { - "node": ">=4.0" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "web": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/estools/estraverse.git" - }, - "devDependencies": { - "babel-preset-env": "^1.6.1", - "babel-register": "^6.3.13", - "chai": "^2.1.1", - "espree": "^1.11.0", - "gulp": "^3.8.10", - "gulp-bump": "^0.2.2", - "gulp-filter": "^2.0.0", - "gulp-git": "^1.0.1", - "gulp-tag-version": "^1.3.0", - "jshint": "^2.5.6", - "mocha": "^2.1.0" - }, - "license": "BSD-2-Clause", - "scripts": { - "test": "npm run-script lint && npm run-script unit-test", - "lint": "jshint estraverse.js", - "unit-test": "mocha --compilers js:babel-register" +Writable.prototype.end = function(chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (typeof chunk !== 'undefined' && chunk !== null) + this.write(chunk, encoding); + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) + endWritable(this, state, cb); +}; + + +function needFinish(stream, state) { + return (state.ending && + state.length === 0 && + !state.finished && + !state.writing); +} + +function finishMaybe(stream, state) { + var need = needFinish(stream, state); + if (need) { + state.finished = true; + stream.emit('finish'); + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) + setImmediate(cb); + else + stream.once('finish', cb); } + state.ended = true; } -},{}],57:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/stream-browserify/writable.js","/node_modules/gulp-browserify/node_modules/stream-browserify") +},{"./index.js":61,"buffer":57,"inherits":91,"lYpoI2":59,"process/browser.js":62}],67:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. -var util = require('./util'); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; +var Buffer = require('buffer').Buffer; -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); +function assertEncoding(encoding) { + if (encoding && !Buffer.isEncoding(encoding)) { + throw new Error('Unknown encoding: ' + encoding); + } } -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); +var StringDecoder = exports.StringDecoder = function(encoding) { + this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); + assertEncoding(encoding); + switch (this.encoding) { + case 'utf8': + // CESU-8 represents each of Surrogate Pair by 3-bytes + this.surrogateSize = 3; + break; + case 'ucs2': + case 'utf16le': + // UTF-16 represents each of Surrogate Pair by 2-bytes + this.surrogateSize = 2; + this.detectIncompleteChar = utf16DetectIncompleteChar; + break; + case 'base64': + // Base-64 stores 3 bytes in 4 chars, and pads the remainder. + this.surrogateSize = 3; + this.detectIncompleteChar = base64DetectIncompleteChar; + break; + default: + this.write = passThroughWrite; + return; } - return set; -}; -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + this.charBuffer = new Buffer(6); + this.charReceived = 0; + this.charLength = 0; }; -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; + +StringDecoder.prototype.write = function(buffer) { + var charStr = ''; + var offset = 0; + + // if our last write ended with an incomplete multibyte character + while (this.charLength) { + // determine how many remaining bytes this buffer has to offer for this char + var i = (buffer.length >= this.charLength - this.charReceived) ? + this.charLength - this.charReceived : + buffer.length; + + // add the new bytes to the char buffer + buffer.copy(this.charBuffer, this.charReceived, offset, i); + this.charReceived += (i - offset); + offset = i; + + if (this.charReceived < this.charLength) { + // still not enough chars in this buffer? wait for more ... + return ''; + } + + // get the character that was split + charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); + + // lead surrogate (D800-DBFF) is also the incomplete character + var charCode = charStr.charCodeAt(charStr.length - 1); + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + this.charLength += this.surrogateSize; + charStr = ''; + continue; } + this.charReceived = this.charLength = 0; + + // if there are no more bytes in this buffer, just emit our char + if (i == buffer.length) return charStr; + + // otherwise cut off the characters end from the beginning of this buffer + buffer = buffer.slice(i, buffer.length); + break; } -}; -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); + var lenIncomplete = this.detectIncompleteChar(buffer); + + var end = buffer.length; + if (this.charLength) { + // buffer the incomplete character bytes we got + buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); + this.charReceived = lenIncomplete; + end -= lenIncomplete; } + + charStr += buffer.toString(this.encoding, 0, end); + + var end = charStr.length - 1; + var charCode = charStr.charCodeAt(end); + // lead surrogate (D800-DBFF) is also the incomplete character + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + var size = this.surrogateSize; + this.charLength += size; + this.charReceived += size; + this.charBuffer.copy(this.charBuffer, size, 0, size); + this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); + return charStr.substring(0, end); + } + + // or just emit the charStr + return charStr; }; -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; +StringDecoder.prototype.detectIncompleteChar = function(buffer) { + // determine how many bytes we have to check at the end of this buffer + var i = (buffer.length >= 3) ? 3 : buffer.length; + + // Figure out if one of the last i bytes of our buffer announces an + // incomplete char. + for (; i > 0; i--) { + var c = buffer[buffer.length - i]; + + // See http://en.wikipedia.org/wiki/UTF-8#Description + + // 110XXXXX + if (i == 1 && c >> 5 == 0x06) { + this.charLength = 2; + break; } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; + + // 1110XXXX + if (i <= 2 && c >> 4 == 0x0E) { + this.charLength = 3; + break; + } + + // 11110XXX + if (i <= 3 && c >> 3 == 0x1E) { + this.charLength = 4; + break; } } - throw new Error('"' + aStr + '" is not in the set.'); + return i; }; -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; +StringDecoder.prototype.end = function(buffer) { + var res = ''; + if (buffer && buffer.length) + res = this.write(buffer); + + if (this.charReceived) { + var cr = this.charReceived; + var buf = this.charBuffer; + var enc = this.encoding; + res += buf.slice(0, cr).toString(enc); } - throw new Error('No element indexed by ' + aIdx); -}; -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); + return res; }; -exports.ArraySet = ArraySet; +function passThroughWrite(buffer) { + return buffer.toString(this.encoding); +} + +function utf16DetectIncompleteChar(buffer) { + var incomplete = this.charReceived = buffer.length % 2; + this.charLength = incomplete ? 2 : 0; + return incomplete; +} + +function base64DetectIncompleteChar(buffer) { + var incomplete = this.charReceived = buffer.length % 3; + this.charLength = incomplete ? 3 : 0; + return incomplete; +} -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/array-set.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./util":66,"FWaASH":50,"buffer":52}],58:[function(require,module,exports){ +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/gulp-browserify/node_modules/string_decoder/index.js","/node_modules/gulp-browserify/node_modules/string_decoder") +},{"buffer":57,"lYpoI2":59}],68:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * Constants enumerating the HTTP status codes. * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: + * All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1), + * RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and + * RFC7538 (Permanent Redirect) are supported. * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * Based on the org.apache.commons.httpclient.HttpStatus Java API. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Ported by Bryce Neal. */ -var base64 = require('./base64'); +var statusCodes = {}; -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 +statusCodes[exports.ACCEPTED = 202] = "Accepted"; +statusCodes[exports.BAD_GATEWAY = 502] = "Bad Gateway"; +statusCodes[exports.BAD_REQUEST = 400] = "Bad Request"; +statusCodes[exports.CONFLICT = 409] = "Conflict"; +statusCodes[exports.CONTINUE = 100] = "Continue"; +statusCodes[exports.CREATED = 201] = "Created"; +statusCodes[exports.EXPECTATION_FAILED = 417] = "Expectation Failed"; +statusCodes[exports.FAILED_DEPENDENCY = 424] = "Failed Dependency"; +statusCodes[exports.FORBIDDEN = 403] = "Forbidden"; +statusCodes[exports.GATEWAY_TIMEOUT = 504] = "Gateway Timeout"; +statusCodes[exports.GONE = 410] = "Gone"; +statusCodes[exports.HTTP_VERSION_NOT_SUPPORTED = 505] = "HTTP Version Not Supported"; +statusCodes[exports.IM_A_TEAPOT = 418] = "I'm a teapot"; +statusCodes[exports.INSUFFICIENT_SPACE_ON_RESOURCE = 419] = "Insufficient Space on Resource"; +statusCodes[exports.INSUFFICIENT_STORAGE = 507] = "Insufficient Storage"; +statusCodes[exports.INTERNAL_SERVER_ERROR = 500] = "Server Error"; +statusCodes[exports.LENGTH_REQUIRED = 411] = "Length Required"; +statusCodes[exports.LOCKED = 423] = "Locked"; +statusCodes[exports.METHOD_FAILURE = 420] = "Method Failure"; +statusCodes[exports.METHOD_NOT_ALLOWED = 405] = "Method Not Allowed"; +statusCodes[exports.MOVED_PERMANENTLY = 301] = "Moved Permanently"; +statusCodes[exports.MOVED_TEMPORARILY = 302] = "Moved Temporarily"; +statusCodes[exports.MULTI_STATUS = 207] = "Multi-Status"; +statusCodes[exports.MULTIPLE_CHOICES = 300] = "Multiple Choices"; +statusCodes[exports.NETWORK_AUTHENTICATION_REQUIRED = 511] = "Network Authentication Required"; +statusCodes[exports.NO_CONTENT = 204] = "No Content"; +statusCodes[exports.NON_AUTHORITATIVE_INFORMATION = 203] = "Non Authoritative Information"; +statusCodes[exports.NOT_ACCEPTABLE = 406] = "Not Acceptable"; +statusCodes[exports.NOT_FOUND = 404] = "Not Found"; +statusCodes[exports.NOT_IMPLEMENTED = 501] = "Not Implemented"; +statusCodes[exports.NOT_MODIFIED = 304] = "Not Modified"; +statusCodes[exports.OK = 200] = "OK"; +statusCodes[exports.PARTIAL_CONTENT = 206] = "Partial Content"; +statusCodes[exports.PAYMENT_REQUIRED = 402] = "Payment Required"; +statusCodes[exports.PERMANENT_REDIRECT = 308] = "Permanent Redirect"; +statusCodes[exports.PRECONDITION_FAILED = 412] = "Precondition Failed"; +statusCodes[exports.PRECONDITION_REQUIRED = 428] = "Precondition Required"; +statusCodes[exports.PROCESSING = 102] = "Processing"; +statusCodes[exports.PROXY_AUTHENTICATION_REQUIRED = 407] = "Proxy Authentication Required"; +statusCodes[exports.REQUEST_HEADER_FIELDS_TOO_LARGE = 431] = "Request Header Fields Too Large"; +statusCodes[exports.REQUEST_TIMEOUT = 408] = "Request Timeout"; +statusCodes[exports.REQUEST_TOO_LONG = 413] = "Request Entity Too Large"; +statusCodes[exports.REQUEST_URI_TOO_LONG = 414] = "Request-URI Too Long"; +statusCodes[exports.REQUESTED_RANGE_NOT_SATISFIABLE = 416] = "Requested Range Not Satisfiable"; +statusCodes[exports.RESET_CONTENT = 205] = "Reset Content"; +statusCodes[exports.SEE_OTHER = 303] = "See Other"; +statusCodes[exports.SERVICE_UNAVAILABLE = 503] = "Service Unavailable"; +statusCodes[exports.SWITCHING_PROTOCOLS = 101] = "Switching Protocols"; +statusCodes[exports.TEMPORARY_REDIRECT = 307] = "Temporary Redirect"; +statusCodes[exports.TOO_MANY_REQUESTS = 429] = "Too Many Requests"; +statusCodes[exports.UNAUTHORIZED = 401] = "Unauthorized"; +statusCodes[exports.UNPROCESSABLE_ENTITY = 422] = "Unprocessable Entity"; +statusCodes[exports.UNSUPPORTED_MEDIA_TYPE = 415] = "Unsupported Media Type"; +statusCodes[exports.USE_PROXY = 305] = "Use Proxy"; -var VLQ_BASE_SHIFT = 5; +exports.getStatusText = function(statusCode) { + if (statusCodes.hasOwnProperty(statusCode)) { + return statusCodes[statusCode]; + } else { + throw new Error("Status code does not exist: " + statusCode); + } +}; -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/http-status-codes/index.js","/node_modules/http-status-codes") +},{"buffer":57,"lYpoI2":59}],69:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; +// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. +// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. +// To save memory and loading time, we read table files only when requested. -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; +exports._dbcs = DBCSCodec; -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} +var UNASSIGNED = -1, + GB18030_CODE = -2, + SEQ_START = -10, + NODE_START = -1000, + UNASSIGNED_NODE = new Array(0x100), + DEF_CHAR = -1; -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} +for (var i = 0; i < 0x100; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - var vlq = toVLQSigned(aValue); +// Class DBCSCodec reads and initializes mapping tables. +function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data.") + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); + // Load tables. + var mappingTable = codecOptions.table(); - return encoded; -}; -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; + // Decode tables: MBCS -> Unicode. - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } + // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. + // Trie root is decodeTables[0]. + // Values: >= 0 -> unicode character code. can be > 0xFFFF + // == UNASSIGNED -> unknown/unassigned sequence. + // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. + // <= NODE_START -> index of the next node in our trie to process next byte. + // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } + // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. + this.decodeTableSeq = []; - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); + // Actual mapping tables consist of chunks. Use them to fill up decode tables. + for (var i = 0; i < mappingTable.length; i++) + this._addDecodeChunk(mappingTable[i]); - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; + this.defaultCharUnicode = iconv.defaultCharUnicode; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/base64-vlq.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./base64":59,"FWaASH":50,"buffer":52}],59:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + + // Encode tables: Unicode -> DBCS. -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. + // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. + // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). + // == UNASSIGNED -> no conversion found. Output a default char. + // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. + this.encodeTable = []; + + // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of + // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key + // means end of sequence (needed when one sequence is a strict subsequence of another). + // Objects are kept separately from encodeTable to increase performance. + this.encodeTableSeq = []; -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; + // Some chars can be decoded, but need not be encoded. + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { + var val = codecOptions.encodeSkipVals[i]; + if (typeof val === 'number') + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + + // Use decode trie to recursively fill out encode tables. + this._fillEncodeTable(0, 0, skipEncodeChars); -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' + // Add more encoding pairs when needed. + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } - var littleA = 97; // 'a' - var littleZ = 122; // 'z' + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); - var zero = 48; // '0' - var nine = 57; // '9' - var plus = 43; // '+' - var slash = 47; // '/' + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === 'function') { + this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - var littleOffset = 26; - var numberOffset = 52; + // Add GB18030 decode tables. + var thirdByteNodeIdx = this.decodeTables.length; + var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } + var fourthByteNodeIdx = this.decodeTables.length; + var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; + var secondByteNode = this.decodeTables[secondByteNodeIdx]; + for (var j = 0x30; j <= 0x39; j++) + secondByteNode[j] = NODE_START - thirdByteNodeIdx; + } + for (var i = 0x81; i <= 0xFE; i++) + thirdByteNode[i] = NODE_START - fourthByteNodeIdx; + for (var i = 0x30; i <= 0x39; i++) + fourthByteNode[i] = GB18030_CODE + } +} - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } +DBCSCodec.prototype.encoder = DBCSEncoder; +DBCSCodec.prototype.decoder = DBCSDecoder; - // 62: + - if (charCode == plus) { - return 62; - } +// Decoder helpers +DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>= 8) + bytes.push(addr & 0xFF); + if (bytes.length == 0) + bytes.push(0); - // 63: / - if (charCode == slash) { - return 63; - } + var node = this.decodeTables[0]; + for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. + var val = node[bytes[i]]; - // Invalid base64 digit. - return -1; -}; + if (val == UNASSIGNED) { // Create new node. + node[bytes[i]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } + else if (val <= NODE_START) { // Existing node. + node = this.decodeTables[NODE_START - val]; + } + else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; +} -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/base64.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"FWaASH":50,"buffer":52}],60:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; +DBCSCodec.prototype._addDecodeChunk = function(chunk) { + // First element of chunk is the hex mbcs code where we start. + var curAddr = parseInt(chunk[0], 16); -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + // Choose the decoding node where we'll write our chars. + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 0xFF; + + // Write all other elements of the chunk to the table. + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { // String, write as-is. + for (var l = 0; l < part.length;) { + var code = part.charCodeAt(l++); + if (0xD800 <= code && code < 0xDC00) { // Decode surrogate + var codeTrail = part.charCodeAt(l++); + if (0xDC00 <= codeTrail && codeTrail < 0xE000) + writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) + var len = 0xFFF - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. + + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } + else + writeTable[curAddr++] = code; // Basic char + } + } + else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } + else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); } + if (curAddr > 0xFF) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); +} - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; +// Encoder helpers +DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; // This could be > 0xFF because of astral characters. + if (this.encodeTable[high] === undefined) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. + return this.encodeTable[high]; +} + +DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; +} + +DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + + // Get the root of character tree according to first character of the sequence. + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + + var node; + if (bucket[low] <= SEQ_START) { + // There's already a sequence with - use it. + node = this.encodeTableSeq[SEQ_START-bucket[low]]; } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + else { + // There was no sequence object - allocate a new one. + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); } - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; + // Traverse the character tree, allocating new nodes as needed. + for (var j = 1; j < seq.length-1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === 'object') + node = oldVal; + else { + node = node[uCode] = {} + if (oldVal !== undefined) + node[DEF_CHAR] = oldVal + } } - } + + // Set the leaf to given dbcsCode. + uCode = seq[seq.length-1]; + node[uCode] = dbcsCode; } -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } +DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + for (var i = 0; i < 0x100; i++) { + var uCode = node[i]; + var mbCode = prefix + i; + if (skipEncodeChars[mbCode]) + continue; - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; + if (uCode >= 0) + this._setEncodeChar(uCode, mbCode); + else if (uCode <= NODE_START) + this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); + else if (uCode <= SEQ_START) + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); } - --index; - } +} - return index; -}; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/binary-search.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"FWaASH":50,"buffer":52}],61:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var util = require('./util'); +// == Encoder ================================================================== -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +function DBCSEncoder(options, codec) { + // Encoder state + this.leadSurrogate = -1; + this.seqObj = undefined; + + // Static data + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; } -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} +DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), + leadSurrogate = this.leadSurrogate, + seqObj = this.seqObj, nextChar = -1, + i = 0, j = 0; -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; + while (true) { + // 0. Get next character. + if (nextChar === -1) { + if (i == str.length) break; + var uCode = str.charCodeAt(i++); + } + else { + var uCode = nextChar; + nextChar = -1; + } -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; + // 1. Handle surrogates. + if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. + if (uCode < 0xDC00) { // We've got lead surrogate. + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + // Double lead surrogate found. + uCode = UNASSIGNED; + } + } else { // We've got trail surrogate. + if (leadSurrogate !== -1) { + uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); + leadSurrogate = -1; + } else { + // Incomplete surrogate pair - only trail surrogate found. + uCode = UNASSIGNED; + } + + } + } + else if (leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. + leadSurrogate = -1; + } -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; + // 2. Convert uCode character. + var dbcsCode = UNASSIGNED; + if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence + var resCode = seqObj[uCode]; + if (typeof resCode === 'object') { // Sequence continues. + seqObj = resCode; + continue; -exports.MappingList = MappingList; + } else if (typeof resCode == 'number') { // Sequence finished. Write it. + dbcsCode = resCode; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/mapping-list.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./util":66,"FWaASH":50,"buffer":52}],62:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + } else if (resCode == undefined) { // Current character is not part of the sequence. -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. + // Try default character for this sequence + resCode = seqObj[DEF_CHAR]; + if (resCode !== undefined) { + dbcsCode = resCode; // Found. Write it. + nextChar = uCode; // Current character will be written too in the next iteration. -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} + } else { + // TODO: What if we have no default? (resCode == undefined) + // Then, we should write first char of the sequence as-is and try the rest recursively. + // Didn't do it for now because no encoding has this situation yet. + // Currently, just skip the sequence and write current char. + } + } + seqObj = undefined; + } + else if (uCode >= 0) { // Regular character + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== undefined) + dbcsCode = subtable[uCode & 0xFF]; + + if (dbcsCode <= SEQ_START) { // Sequence start + seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; + continue; + } -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} + if (dbcsCode == UNASSIGNED && this.gb18030) { + // Use GB18030 algorithm to find character(s) to write. + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; + newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; + newBuf[j++] = 0x30 + dbcsCode; + continue; + } + } + } -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. + // 3. Write dbcsCode character. + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else if (dbcsCode < 0x10000) { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + else { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = (dbcsCode >> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } + } - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); +} - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; +DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === undefined) + return; // All clean. Most often case. - swap(ary, pivotIndex, r); - var pivot = ary[r]; + var newBuf = Buffer.alloc(10), j = 0; - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } + if (this.seqObj) { // We're in the sequence. + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== undefined) { // Write beginning of the sequence. + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + } else { + // See todo above. + } + this.seqObj = undefined; } - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } + if (this.leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + + return newBuf.slice(0, j); } -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; +// Export for testing +DBCSEncoder.prototype.findIdx = findIdx; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/quick-sort.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"FWaASH":50,"buffer":52}],63:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; +// == Decoder ================================================================== -function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } +function DBCSDecoder(options, codec) { + // Decoder state + this.nodeIdx = 0; + this.prevBuf = Buffer.alloc(0); - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + // Static data + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; } -SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); -} +DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer.alloc(buf.length*2), + nodeIdx = this.nodeIdx, + prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, + seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. + uCode; -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; + if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. + prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); + + for (var i = 0, j = 0; i < buf.length; i++) { + var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. + // Lookup in current trie node. + var uCode = this.decodeTables[nodeIdx][curByte]; -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } + if (uCode >= 0) { + // Normal character, just use it. + } + else if (uCode === UNASSIGNED) { // Unknown char. + // TODO: Callback with seq. + //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); + i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). + uCode = this.defaultCharUnicode.charCodeAt(0); + } + else if (uCode === GB18030_CODE) { + var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); + var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } + else if (uCode <= NODE_START) { // Go to next trie node. + nodeIdx = NODE_START - uCode; + continue; + } + else if (uCode <= SEQ_START) { // Output a sequence of chars. + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length-1]; + } + else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - return this.__generatedMappings; - } -}); + // Write the character to buffer, handling higher planes using surrogate pair. + if (uCode > 0xFFFF) { + uCode -= 0x10000; + var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); + newBuf[j++] = uCodeLead & 0xFF; + newBuf[j++] = uCodeLead >> 8; -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); + uCode = 0xDC00 + uCode % 0x400; + } + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + + // Reset trie node. + nodeIdx = 0; seqStart = i+1; } - return this.__originalMappings; - } -}); + this.nodeIdx = nodeIdx; + this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); + return newBuf.slice(0, j).toString('ucs2'); +} -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; +DBCSDecoder.prototype.end = function() { + var ret = ''; -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; + // Try to parse all remaining chars. + while (this.prevBuf.length > 0) { + // Skip 1 character in the buffer. + ret += this.defaultCharUnicode; + var buf = this.prevBuf.slice(1); -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; + // Parse remaining as usual. + this.prevBuf = Buffer.alloc(0); + this.nodeIdx = 0; + if (buf.length > 0) + ret += this.write(buf); + } -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; + this.nodeIdx = 0; + return ret; +} -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; +// Binary search for GB18030. Returns largest i such that table[i] <= val. +function findIdx(table, val) { + if (table[0] > val) + return -1; - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); + var l = 0, r = table.length; + while (l < r-1) { // always table[l] <= val < table[r] + var mid = l + Math.floor((r-l+1)/2); + if (table[mid] <= val) + l = mid; + else + r = mid; } + return l; +} - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. - * - column: Optional. the column number in the original source. - * The column number is 0-based. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-codec.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],70:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; +// Description of supported double byte encodings and aliases. +// Tables are not require()-d until they are needed to speed up library load. +// require()-s are direct to support Browserify. - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } +module.exports = { + + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - var mappings = []; + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; + 'shiftjis': { + type: '_dbcs', + table: function() { return require('./tables/shiftjis.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + encodeSkipVals: [{from: 0xED40, to: 0xF940}], + }, + 'csshiftjis': 'shiftjis', + 'mskanji': 'shiftjis', + 'sjis': 'shiftjis', + 'windows31j': 'shiftjis', + 'ms31j': 'shiftjis', + 'xsjis': 'shiftjis', + 'windows932': 'shiftjis', + 'ms932': 'shiftjis', + '932': 'shiftjis', + 'cp932': 'shiftjis', - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; + 'eucjp': { + type: '_dbcs', + table: function() { return require('./tables/eucjp.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + }, - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - mapping = this._originalMappings[++index]; - } - } - } + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + 'gb2312': 'cp936', + 'gb231280': 'cp936', + 'gb23121980': 'cp936', + 'csgb2312': 'cp936', + 'csiso58gb231280': 'cp936', + 'euccn': 'cp936', - return mappings; - }; + // Microsoft's CP936 is a subset and approximation of GBK. + 'windows936': 'cp936', + 'ms936': 'cp936', + '936': 'cp936', + 'cp936': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json') }, + }, -exports.SourceMapConsumer = SourceMapConsumer; + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + 'gbk': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + }, + 'xgbk': 'gbk', + 'isoir58': 'gbk', -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The first parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + 'gb18030': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + gb18030: function() { return require('./tables/gb18030-ranges.json') }, + encodeSkipVals: [0x80], + encodeAdd: {'€': 0xA2E3}, + }, - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); + 'chinese': 'gb18030', - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + 'windows949': 'cp949', + 'ms949': 'cp949', + '949': 'cp949', + 'cp949': { + type: '_dbcs', + table: function() { return require('./tables/cp949.json') }, + }, - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); + 'cseuckr': 'cp949', + 'csksc56011987': 'cp949', + 'euckr': 'cp949', + 'isoir149': 'cp949', + 'korean': 'cp949', + 'ksc56011987': 'cp949', + 'ksc56011989': 'cp949', + 'ksc5601': 'cp949', - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; -} + 'windows950': 'cp950', + 'ms950': 'cp950', + '950': 'cp950', + 'cp950': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json') }, + }, -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + 'big5': 'big5hkscs', + 'big5hkscs': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, + encodeSkipVals: [0xa2cc], + }, -/** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ -BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } + 'cnbig5': 'big5hkscs', + 'csbig5': 'big5hkscs', + 'xxbig5': 'big5hkscs', +}; - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-data.js","/node_modules/iconv-lite/encodings") +},{"./tables/big5-added.json":76,"./tables/cp936.json":77,"./tables/cp949.json":78,"./tables/cp950.json":79,"./tables/eucjp.json":80,"./tables/gb18030-ranges.json":81,"./tables/gbk-added.json":82,"./tables/shiftjis.json":83,"buffer":57,"lYpoI2":59}],71:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } +// Update this array if you add/rename/remove files in this directory. +// We support Browserify by skipping automatic module discovery and requiring modules directly. +var modules = [ + require("./internal"), + require("./utf16"), + require("./utf7"), + require("./sbcs-codec"), + require("./sbcs-data"), + require("./sbcs-data-generated"), + require("./dbcs-codec"), + require("./dbcs-data"), +]; - return -1; -}; +// Put all encoding/alias/codec definitions to single object and export it. +for (var i = 0; i < modules.length; i++) { + var module = modules[i]; + for (var enc in module) + if (Object.prototype.hasOwnProperty.call(module, enc)) + exports[enc] = module[enc]; +} -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/index.js","/node_modules/iconv-lite/encodings") +},{"./dbcs-codec":69,"./dbcs-data":70,"./internal":72,"./sbcs-codec":73,"./sbcs-data":75,"./sbcs-data-generated":74,"./utf16":84,"./utf7":85,"buffer":57,"lYpoI2":59}],72:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); +// Export Node.js internal encodings. - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. +module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true}, + cesu8: { type: "_internal", bomAware: true}, + unicode11utf8: "utf8", - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; + ucs2: { type: "_internal", bomAware: true}, + utf16le: "ucs2", - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; + // Codec. + _internal: InternalCodec, +}; - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } +//------------------------------------------------------------------------------ - destOriginalMappings.push(destMapping); - } +function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; - destGeneratedMappings.push(destMapping); + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; // Use utf8 for decoding. + this.encoder = InternalEncoderCesu8; + + // Add decoder for versions of Node not supporting CESU-8 + if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } } +} - quickSort(smc.__originalMappings, util.compareByOriginalPositions); +InternalCodec.prototype.encoder = InternalEncoder; +InternalCodec.prototype.decoder = InternalDecoder; - return smc; - }; +//------------------------------------------------------------------------------ -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; +// We use node.js internal decoder. Its signature is the same as ours. +var StringDecoder = require('string_decoder').StringDecoder; -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._absoluteSources.slice(); - } -}); +if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. + StringDecoder.prototype.end = function() {}; -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; +function InternalDecoder(options, codec) { + StringDecoder.call(this, codec.enc); +} - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; +InternalDecoder.prototype = StringDecoder.prototype; - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } +//------------------------------------------------------------------------------ +// Encoder is mostly trivial - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } +function InternalEncoder(options, codec) { + this.enc = codec.enc; +} - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } +InternalEncoder.prototype.write = function(str) { + return Buffer.from(str, this.enc); +} - cachedSegments[str] = segment; - } +InternalEncoder.prototype.end = function() { +} - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; +//------------------------------------------------------------------------------ +// Except base64 encoder, which must keep its state. - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; +function InternalEncoderBase64(options, codec) { + this.prevStr = ''; +} - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; +InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - (str.length % 4); + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } + return Buffer.from(str, "base64"); +} - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } +InternalEncoderBase64.prototype.end = function() { + return Buffer.from(this.prevStr, "base64"); +} - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; +//------------------------------------------------------------------------------ +// CESU-8 encoder is also special. -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. +function InternalEncoderCesu8(options, codec) { +} - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); +InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + // Naive implementation, but it works because CESU-8 is especially easy + // to convert from UTF-16 (which all JS strings are encoded in). + if (charCode < 0x80) + buf[bufIdx++] = charCode; + else if (charCode < 0x800) { + buf[bufIdx++] = 0xC0 + (charCode >>> 6); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } + else { // charCode will always be < 0x10000 in javascript. + buf[bufIdx++] = 0xE0 + (charCode >>> 12); + buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } } + return buf.slice(0, bufIdx); +} - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; +InternalEncoderCesu8.prototype.end = function() { +} -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; +//------------------------------------------------------------------------------ +// CESU-8 decoder is not implemented in Node v4.0+ - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; +function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; +} - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } +InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, + res = ''; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 0xC0) !== 0x80) { // Leading byte + if (contBytes > 0) { // Previous code is invalid + res += this.defaultCharUnicode; + contBytes = 0; + } - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; + if (curByte < 0x80) { // Single-byte code + res += String.fromCharCode(curByte); + } else if (curByte < 0xE0) { // Two-byte code + acc = curByte & 0x1F; + contBytes = 1; accBytes = 1; + } else if (curByte < 0xF0) { // Three-byte code + acc = curByte & 0x0F; + contBytes = 2; accBytes = 1; + } else { // Four or more are not supported for CESU-8. + res += this.defaultCharUnicode; + } + } else { // Continuation byte + if (contBytes > 0) { // We're waiting for it. + acc = (acc << 6) | (curByte & 0x3f); + contBytes--; accBytes++; + if (contBytes === 0) { + // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) + if (accBytes === 2 && acc < 0x80 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 0x800) + res += this.defaultCharUnicode; + else + // Actually add character. + res += String.fromCharCode(acc); + } + } else { // Unexpected continuation byte + res += this.defaultCharUnicode; + } + } } - }; + this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; + return res; +} -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; +InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; +} - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/internal.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59,"safer-buffer":110,"string_decoder":67}],73:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; - if (index >= 0) { - var mapping = this._generatedMappings[index]; +// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that +// correspond to encoded bytes (if 128 - then lower half is ASCII). - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } +exports._sbcs = SBCSCodec; +function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data.") + + // Prepare char buffer for decoding. + if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) + throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); + + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; } - return { - source: null, - line: null, - column: null, - name: null - }; - }; + this.decodeBuf = new Buffer.from(codecOptions.chars, 'ucs2'); + + // Encoding buffer. + var encodeBuf = new Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } + this.encodeBuf = encodeBuf; +} - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } +SBCSCodec.prototype.encoder = SBCSEncoder; +SBCSCodec.prototype.decoder = SBCSDecoder; - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } +function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; +} - if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } +SBCSEncoder.prototype.write = function(str) { + var buf = Buffer.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + + return buf; +} - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; +SBCSEncoder.prototype.end = function() { +} -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; +function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; +} - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The first parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) +SBCSDecoder.prototype.write = function(buf) { + // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. + var decodeBuf = this.decodeBuf; + var newBuf = Buffer.alloc(buf.length*2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i]*2; idx2 = i*2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2+1] = decodeBuf[idx1+1]; } - }); + return newBuf.toString('ucs2'); } -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. The - * line number is 1-based. - * - column: The column number in the generated source, or null. - * The column number is 0-based. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-map-consumer.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./array-set":57,"./base64-vlq":58,"./binary-search":60,"./quick-sort":62,"./util":66,"FWaASH":50,"buffer":52}],64:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; +SBCSDecoder.prototype.end = function() { } -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-codec.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],74:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; +// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. +module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "macgreek": { + "type": "_sbcs", + "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" + }, + "maciceland": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macroman": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macromania": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macthai": { + "type": "_sbcs", + "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" + }, + "macturkish": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macukraine": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "koi8r": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8u": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8t": { + "type": "_sbcs", + "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "armscii8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" + }, + "rk1048": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "georgianps": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "pt154": { + "type": "_sbcs", + "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "viscii": { + "type": "_sbcs", + "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "hproman8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" + }, + "macintosh": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "ascii": { + "type": "_sbcs", + "chars": "��������������������������������������������������������������������������������������������������������������������������������" + }, + "tis620": { + "type": "_sbcs", + "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + } +} +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data-generated.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59}],75:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); +// Manually added data to be used by sbcs codec in addition to generated one. - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } +module.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" + }, - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " + }, - }, this); - this._sources = newSources; - this._names = newNames; + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek" : "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' + "cp819": "iso88591", + "ibm819": "iso88591", - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } + "cyrillic": "iso88595", - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; + "greek" : "iso88597", + "greek8" : "iso88597", + "ecma118" : "iso88597", + "elot928" : "iso88597", - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; + "hebrew": "iso88598", + "hebrew8": "iso88598", - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; + "turkish": "iso88599", + "turkish8": "iso88599", - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } + "thai": "iso885911", + "thai8": "iso885911", - result += next; - } + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", - return result; - }; + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", - return map; - }; + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", -exports.SourceMapGenerator = SourceMapGenerator; + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-map-generator.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./array-set":57,"./base64-vlq":58,"./mapping-list":61,"./util":66,"FWaASH":50,"buffer":52}],65:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + "strk10482002": "rk1048", -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; + "gb198880": "iso646cn", + "cn": "iso646cn", -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} + "mac": "macintosh", + "csmacintosh": "macintosh", +}; -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59}],76:[function(require,module,exports){ +module.exports=[ +["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], +["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], +["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], +["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], +["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], +["8940","𪎩𡅅"], +["8943","攊"], +["8946","丽滝鵎釟"], +["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], +["89a1","琑糼緍楆竉刧"], +["89ab","醌碸酞肼"], +["89b0","贋胶𠧧"], +["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], +["89c1","溚舾甙"], +["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], +["8a40","𧶄唥"], +["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], +["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], +["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], +["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], +["8aac","䠋𠆩㿺塳𢶍"], +["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], +["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], +["8ac9","𪘁𠸉𢫏𢳉"], +["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], +["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], +["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], +["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], +["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], +["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], +["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], +["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], +["8ca1","𣏹椙橃𣱣泿"], +["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], +["8cc9","顨杫䉶圽"], +["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], +["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], +["8d40","𠮟"], +["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], +["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], +["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], +["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], +["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], +["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], +["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], +["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], +["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], +["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], +["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], +["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], +["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], +["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], +["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], +["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], +["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], +["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], +["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], +["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], +["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], +["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], +["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], +["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], +["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], +["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], +["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], +["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], +["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], +["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], +["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], +["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], +["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], +["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], +["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], +["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], +["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], +["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], +["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], +["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], +["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], +["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], +["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], +["9fae","酙隁酜"], +["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], +["9fc1","𤤙盖鮝个𠳔莾衂"], +["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], +["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], +["9fe7","毺蠘罸"], +["9feb","嘠𪙊蹷齓"], +["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], +["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], +["a055","𡠻𦸅"], +["a058","詾𢔛"], +["a05b","惽癧髗鵄鍮鮏蟵"], +["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], +["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], +["a0a1","嵗𨯂迚𨸹"], +["a0a6","僙𡵆礆匲阸𠼻䁥"], +["a0ae","矾"], +["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], +["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], +["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], +["a3c0","␀",31,"␡"], +["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], +["c740","す",58,"ァアィイ"], +["c7a1","ゥ",81,"А",5,"ЁЖ",4], +["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], +["c8a1","龰冈龱𧘇"], +["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], +["c8f5","ʃɐɛɔɵœøŋʊɪ"], +["f9fe","■"], +["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], +["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], +["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], +["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], +["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], +["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], +["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], +["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], +["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], +["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] +] - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex] || ''; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ''; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/source-node.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"./source-map-generator":64,"./util":66,"FWaASH":50,"buffer":52}],66:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || urlRegexp.test(aPath); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 === null) { - return 1; // aStr2 !== null - } - - if (aStr2 === null) { - return -1; // aStr1 !== null - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - -/** - * Strip any JSON XSSI avoidance prefix from the string (as documented - * in the source maps specification), and then parse the string as - * JSON. - */ -function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); -} -exports.parseSourceMapInput = parseSourceMapInput; - -/** - * Compute the URL of a source given the the source root, the source's - * URL, and the source map's URL. - */ -function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ''; - - if (sourceRoot) { - // This follows what Chrome does. - if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { - sourceRoot += '/'; - } - // The spec says: - // Line 4: An optional source root, useful for relocating source - // files on a server or removing repeated values in the - // “sources” entry. This value is prepended to the individual - // entries in the “source” field. - sourceURL = sourceRoot + sourceURL; - } - - // Historically, SourceMapConsumer did not take the sourceMapURL as - // a parameter. This mode is still somewhat supported, which is why - // this code block is conditional. However, it's preferable to pass - // the source map URL to SourceMapConsumer, so that this function - // can implement the source URL resolution algorithm as outlined in - // the spec. This block is basically the equivalent of: - // new URL(sourceURL, sourceMapURL).toString() - // ... except it avoids using URL, which wasn't available in the - // older releases of node still supported by this library. - // - // The spec says: - // If the sources are not absolute URLs after prepending of the - // “sourceRoot”, the sources are resolved relative to the - // SourceMap (like resolving script src in a html document). - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - // Strip the last path component, but keep the "/". - var index = parsed.path.lastIndexOf('/'); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - - return normalize(sourceURL); -} -exports.computeSourceURL = computeSourceURL; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/lib/util.js","/node_modules/escodegen/node_modules/source-map/lib") -},{"FWaASH":50,"buffer":52}],67:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/escodegen/node_modules/source-map/source-map.js","/node_modules/escodegen/node_modules/source-map") -},{"./lib/source-map-consumer":63,"./lib/source-map-generator":64,"./lib/source-node":65,"FWaASH":50,"buffer":52}],68:[function(require,module,exports){ -module.exports={ - "name": "escodegen", - "description": "ECMAScript code generator", - "homepage": "http://github.com/estools/escodegen", - "main": "escodegen.js", - "bin": { - "esgenerate": "./bin/esgenerate.js", - "escodegen": "./bin/escodegen.js" - }, - "files": [ - "LICENSE.BSD", - "README.md", - "bin", - "escodegen.js", - "package.json" - ], - "version": "1.14.3", - "engines": { - "node": ">=4.0" - }, - "maintainers": [ - { - "name": "Yusuke Suzuki", - "email": "utatane.tea@gmail.com", - "web": "http://github.com/Constellation" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/estools/escodegen.git" - }, - "dependencies": { - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "esprima": "^4.0.1", - "optionator": "^0.8.1" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - }, - "devDependencies": { - "acorn": "^7.1.0", - "bluebird": "^3.4.7", - "bower-registry-client": "^1.0.0", - "chai": "^3.5.0", - "commonjs-everywhere": "^0.9.7", - "gulp": "^3.8.10", - "gulp-eslint": "^3.0.1", - "gulp-mocha": "^3.0.1", - "semver": "^5.1.0" - }, - "license": "BSD-2-Clause", - "scripts": { - "test": "gulp travis", - "unit-test": "gulp test", - "lint": "gulp lint", - "release": "node tools/release.js", - "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js", - "build": "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js" - } -} - -},{}],69:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - function isExpression(node) { - if (node == null) { return false; } - switch (node.type) { - case 'ArrayExpression': - case 'AssignmentExpression': - case 'BinaryExpression': - case 'CallExpression': - case 'ConditionalExpression': - case 'FunctionExpression': - case 'Identifier': - case 'Literal': - case 'LogicalExpression': - case 'MemberExpression': - case 'NewExpression': - case 'ObjectExpression': - case 'SequenceExpression': - case 'ThisExpression': - case 'UnaryExpression': - case 'UpdateExpression': - return true; - } - return false; - } - - function isIterationStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'DoWhileStatement': - case 'ForInStatement': - case 'ForStatement': - case 'WhileStatement': - return true; - } - return false; - } - - function isStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'BlockStatement': - case 'BreakStatement': - case 'ContinueStatement': - case 'DebuggerStatement': - case 'DoWhileStatement': - case 'EmptyStatement': - case 'ExpressionStatement': - case 'ForInStatement': - case 'ForStatement': - case 'IfStatement': - case 'LabeledStatement': - case 'ReturnStatement': - case 'SwitchStatement': - case 'ThrowStatement': - case 'TryStatement': - case 'VariableDeclaration': - case 'WhileStatement': - case 'WithStatement': - return true; - } - return false; - } - - function isSourceElement(node) { - return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; - } - - function trailingStatement(node) { - switch (node.type) { - case 'IfStatement': - if (node.alternate != null) { - return node.alternate; - } - return node.consequent; - - case 'LabeledStatement': - case 'ForStatement': - case 'ForInStatement': - case 'WhileStatement': - case 'WithStatement': - return node.body; - } - return null; - } - - function isProblematicIfStatement(node) { - var current; - - if (node.type !== 'IfStatement') { - return false; - } - if (node.alternate == null) { - return false; - } - current = node.consequent; - do { - if (current.type === 'IfStatement') { - if (current.alternate == null) { - return true; - } - } - current = trailingStatement(current); - } while (current); - - return false; - } - - module.exports = { - isExpression: isExpression, - isStatement: isStatement, - isIterationStatement: isIterationStatement, - isSourceElement: isSourceElement, - isProblematicIfStatement: isProblematicIfStatement, - - trailingStatement: trailingStatement - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/ast.js","/node_modules/esutils/lib") -},{"FWaASH":50,"buffer":52}],70:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013-2014 Yusuke Suzuki - Copyright (C) 2014 Ivan Nikulin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; - - // See `tools/generate-identifier-regex.js`. - ES5Regex = { - // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart: - NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, - // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart: - NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ - }; - - ES6Regex = { - // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart: - NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, - // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart: - NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ - }; - - function isDecimalDigit(ch) { - return 0x30 <= ch && ch <= 0x39; // 0..9 - } - - function isHexDigit(ch) { - return 0x30 <= ch && ch <= 0x39 || // 0..9 - 0x61 <= ch && ch <= 0x66 || // a..f - 0x41 <= ch && ch <= 0x46; // A..F - } - - function isOctalDigit(ch) { - return ch >= 0x30 && ch <= 0x37; // 0..7 - } - - // 7.2 White Space - - NON_ASCII_WHITESPACES = [ - 0x1680, - 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, - 0x202F, 0x205F, - 0x3000, - 0xFEFF - ]; - - function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || - ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; - } - - // 7.6 Identifier Names and Identifiers - - function fromCodePoint(cp) { - if (cp <= 0xFFFF) { return String.fromCharCode(cp); } - var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); - var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); - return cu1 + cu2; - } - - IDENTIFIER_START = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_START[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) - } - - IDENTIFIER_PART = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_PART[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch >= 0x30 && ch <= 0x39 || // 0..9 - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) - } - - function isIdentifierStartES5(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } - - function isIdentifierPartES5(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } - - function isIdentifierStartES6(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } - - function isIdentifierPartES6(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } - - module.exports = { - isDecimalDigit: isDecimalDigit, - isHexDigit: isHexDigit, - isOctalDigit: isOctalDigit, - isWhiteSpace: isWhiteSpace, - isLineTerminator: isLineTerminator, - isIdentifierStartES5: isIdentifierStartES5, - isIdentifierPartES5: isIdentifierPartES5, - isIdentifierStartES6: isIdentifierStartES6, - isIdentifierPartES6: isIdentifierPartES6 - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/code.js","/node_modules/esutils/lib") -},{"FWaASH":50,"buffer":52}],71:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var code = require('./code'); - - function isStrictModeReservedWordES6(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'let': - return true; - default: - return false; - } - } - - function isKeywordES5(id, strict) { - // yield should not be treated as keyword under non-strict mode. - if (!strict && id === 'yield') { - return false; - } - return isKeywordES6(id, strict); - } - - function isKeywordES6(id, strict) { - if (strict && isStrictModeReservedWordES6(id)) { - return true; - } - - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } - - function isReservedWordES5(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); - } - - function isReservedWordES6(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - function isIdentifierNameES5(id) { - var i, iz, ch; - - if (id.length === 0) { return false; } - - ch = id.charCodeAt(0); - if (!code.isIdentifierStartES5(ch)) { - return false; - } - - for (i = 1, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (!code.isIdentifierPartES5(ch)) { - return false; - } - } - return true; - } - - function decodeUtf16(lead, trail) { - return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; - } - - function isIdentifierNameES6(id) { - var i, iz, ch, lowCh, check; - - if (id.length === 0) { return false; } - - check = code.isIdentifierStartES6; - for (i = 0, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (0xD800 <= ch && ch <= 0xDBFF) { - ++i; - if (i >= iz) { return false; } - lowCh = id.charCodeAt(i); - if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { - return false; - } - ch = decodeUtf16(ch, lowCh); - } - if (!check(ch)) { - return false; - } - check = code.isIdentifierPartES6; - } - return true; - } - - function isIdentifierES5(id, strict) { - return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); - } - - function isIdentifierES6(id, strict) { - return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); - } - - module.exports = { - isKeywordES5: isKeywordES5, - isKeywordES6: isKeywordES6, - isReservedWordES5: isReservedWordES5, - isReservedWordES6: isReservedWordES6, - isRestrictedWord: isRestrictedWord, - isIdentifierNameES5: isIdentifierNameES5, - isIdentifierNameES6: isIdentifierNameES6, - isIdentifierES5: isIdentifierES5, - isIdentifierES6: isIdentifierES6 - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/keyword.js","/node_modules/esutils/lib") -},{"./code":70,"FWaASH":50,"buffer":52}],72:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -(function () { - 'use strict'; - - exports.ast = require('./ast'); - exports.code = require('./code'); - exports.keyword = require('./keyword'); -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/esutils/lib/utils.js","/node_modules/esutils/lib") -},{"./ast":69,"./code":70,"./keyword":71,"FWaASH":50,"buffer":52}],73:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } - throw TypeError('Uncaught, unspecified "error" event.'); - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - handler.apply(this, args); - } - } else if (isObject(handler)) { - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - var m; - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.listenerCount = function(emitter, type) { - var ret; - if (!emitter._events || !emitter._events[type]) - ret = 0; - else if (isFunction(emitter._events[type])) - ret = 1; - else - ret = emitter._events[type].length; - return ret; -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/events/events.js","/node_modules/events") -},{"FWaASH":50,"buffer":52}],74:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; - -// do not edit .js files directly - edit src/index.jst - - - -module.exports = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-deep-equal/index.js","/node_modules/fast-deep-equal") -},{"FWaASH":50,"buffer":52}],75:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; - -module.exports = function (data, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); - - var seen = []; - return (function stringify (node) { - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } - - if (node === undefined) return; - if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; - if (typeof node !== 'object') return JSON.stringify(node); - - var i, out; - if (Array.isArray(node)) { - out = '['; - for (i = 0; i < node.length; i++) { - if (i) out += ','; - out += stringify(node[i]) || 'null'; - } - return out + ']'; - } - - if (node === null) return 'null'; - - if (seen.indexOf(node) !== -1) { - if (cycles) return JSON.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } - - var seenIndex = seen.push(node) - 1; - var keys = Object.keys(node).sort(cmp && cmp(node)); - out = ''; - for (i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node[key]); - - if (!value) continue; - if (out) out += ','; - out += JSON.stringify(key) + ':' + value; - } - seen.splice(seenIndex, 1); - return '{' + out + '}'; - })(data); -}; - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/fast-json-stable-stringify/index.js","/node_modules/fast-json-stable-stringify") -},{"FWaASH":50,"buffer":52}],76:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/** - * Constants enumerating the HTTP status codes. - * - * All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1), - * RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and - * RFC7538 (Permanent Redirect) are supported. - * - * Based on the org.apache.commons.httpclient.HttpStatus Java API. - * - * Ported by Bryce Neal. - */ - -var statusCodes = {}; - -statusCodes[exports.ACCEPTED = 202] = "Accepted"; -statusCodes[exports.BAD_GATEWAY = 502] = "Bad Gateway"; -statusCodes[exports.BAD_REQUEST = 400] = "Bad Request"; -statusCodes[exports.CONFLICT = 409] = "Conflict"; -statusCodes[exports.CONTINUE = 100] = "Continue"; -statusCodes[exports.CREATED = 201] = "Created"; -statusCodes[exports.EXPECTATION_FAILED = 417] = "Expectation Failed"; -statusCodes[exports.FAILED_DEPENDENCY = 424] = "Failed Dependency"; -statusCodes[exports.FORBIDDEN = 403] = "Forbidden"; -statusCodes[exports.GATEWAY_TIMEOUT = 504] = "Gateway Timeout"; -statusCodes[exports.GONE = 410] = "Gone"; -statusCodes[exports.HTTP_VERSION_NOT_SUPPORTED = 505] = "HTTP Version Not Supported"; -statusCodes[exports.IM_A_TEAPOT = 418] = "I'm a teapot"; -statusCodes[exports.INSUFFICIENT_SPACE_ON_RESOURCE = 419] = "Insufficient Space on Resource"; -statusCodes[exports.INSUFFICIENT_STORAGE = 507] = "Insufficient Storage"; -statusCodes[exports.INTERNAL_SERVER_ERROR = 500] = "Server Error"; -statusCodes[exports.LENGTH_REQUIRED = 411] = "Length Required"; -statusCodes[exports.LOCKED = 423] = "Locked"; -statusCodes[exports.METHOD_FAILURE = 420] = "Method Failure"; -statusCodes[exports.METHOD_NOT_ALLOWED = 405] = "Method Not Allowed"; -statusCodes[exports.MOVED_PERMANENTLY = 301] = "Moved Permanently"; -statusCodes[exports.MOVED_TEMPORARILY = 302] = "Moved Temporarily"; -statusCodes[exports.MULTI_STATUS = 207] = "Multi-Status"; -statusCodes[exports.MULTIPLE_CHOICES = 300] = "Multiple Choices"; -statusCodes[exports.NETWORK_AUTHENTICATION_REQUIRED = 511] = "Network Authentication Required"; -statusCodes[exports.NO_CONTENT = 204] = "No Content"; -statusCodes[exports.NON_AUTHORITATIVE_INFORMATION = 203] = "Non Authoritative Information"; -statusCodes[exports.NOT_ACCEPTABLE = 406] = "Not Acceptable"; -statusCodes[exports.NOT_FOUND = 404] = "Not Found"; -statusCodes[exports.NOT_IMPLEMENTED = 501] = "Not Implemented"; -statusCodes[exports.NOT_MODIFIED = 304] = "Not Modified"; -statusCodes[exports.OK = 200] = "OK"; -statusCodes[exports.PARTIAL_CONTENT = 206] = "Partial Content"; -statusCodes[exports.PAYMENT_REQUIRED = 402] = "Payment Required"; -statusCodes[exports.PERMANENT_REDIRECT = 308] = "Permanent Redirect"; -statusCodes[exports.PRECONDITION_FAILED = 412] = "Precondition Failed"; -statusCodes[exports.PRECONDITION_REQUIRED = 428] = "Precondition Required"; -statusCodes[exports.PROCESSING = 102] = "Processing"; -statusCodes[exports.PROXY_AUTHENTICATION_REQUIRED = 407] = "Proxy Authentication Required"; -statusCodes[exports.REQUEST_HEADER_FIELDS_TOO_LARGE = 431] = "Request Header Fields Too Large"; -statusCodes[exports.REQUEST_TIMEOUT = 408] = "Request Timeout"; -statusCodes[exports.REQUEST_TOO_LONG = 413] = "Request Entity Too Large"; -statusCodes[exports.REQUEST_URI_TOO_LONG = 414] = "Request-URI Too Long"; -statusCodes[exports.REQUESTED_RANGE_NOT_SATISFIABLE = 416] = "Requested Range Not Satisfiable"; -statusCodes[exports.RESET_CONTENT = 205] = "Reset Content"; -statusCodes[exports.SEE_OTHER = 303] = "See Other"; -statusCodes[exports.SERVICE_UNAVAILABLE = 503] = "Service Unavailable"; -statusCodes[exports.SWITCHING_PROTOCOLS = 101] = "Switching Protocols"; -statusCodes[exports.TEMPORARY_REDIRECT = 307] = "Temporary Redirect"; -statusCodes[exports.TOO_MANY_REQUESTS = 429] = "Too Many Requests"; -statusCodes[exports.UNAUTHORIZED = 401] = "Unauthorized"; -statusCodes[exports.UNPROCESSABLE_ENTITY = 422] = "Unprocessable Entity"; -statusCodes[exports.UNSUPPORTED_MEDIA_TYPE = 415] = "Unsupported Media Type"; -statusCodes[exports.USE_PROXY = 305] = "Use Proxy"; - -exports.getStatusText = function(statusCode) { - if (statusCodes.hasOwnProperty(statusCode)) { - return statusCodes[statusCode]; - } else { - throw new Error("Status code does not exist: " + statusCode); - } -}; - -exports.getStatusCode = function(reasonPhrase) { - for (key in statusCodes) { - if (statusCodes[key] === reasonPhrase) { - return parseInt(key, 10); - } - } - throw new Error("Reason phrase does not exist: " + reasonPhrase); -}; - - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/http-status-codes/index.js","/node_modules/http-status-codes") -},{"FWaASH":50,"buffer":52}],77:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec; - -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; - -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; - - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); - - // Load tables. - var mappingTable = codecOptions.table(); - - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); - - this.defaultCharUnicode = iconv.defaultCharUnicode; - - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); - - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 decode tables. - var thirdByteNodeIdx = this.decodeTables.length; - var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - var fourthByteNodeIdx = this.decodeTables.length; - var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; - var secondByteNode = this.decodeTables[secondByteNodeIdx]; - for (var j = 0x30; j <= 0x39; j++) - secondByteNode[j] = NODE_START - thirdByteNodeIdx; - } - for (var i = 0x81; i <= 0xFE; i++) - thirdByteNode[i] = NODE_START - fourthByteNodeIdx; - for (var i = 0x30; i <= 0x39; i++) - fourthByteNode[i] = GB18030_CODE - } -} - -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); - - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} - - -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); - } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; +},{}],77:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127,"€"], +["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], +["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], +["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], +["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], +["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], +["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], +["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], +["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], +["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], +["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], +["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], +["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], +["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], +["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], +["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], +["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], +["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], +["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], +["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], +["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], +["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], +["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], +["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], +["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], +["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], +["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], +["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], +["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], +["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], +["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], +["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], +["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], +["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], +["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], +["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], +["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], +["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], +["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], +["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], +["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], +["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], +["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], +["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], +["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], +["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], +["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], +["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], +["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], +["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], +["9980","檧檨檪檭",114,"欥欦欨",6], +["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], +["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], +["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], +["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], +["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], +["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], +["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], +["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], +["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], +["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], +["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], +["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], +["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], +["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], +["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], +["a2a1","ⅰ",9], +["a2b1","⒈",19,"⑴",19,"①",9], +["a2e5","㈠",9], +["a2f1","Ⅰ",11], +["a3a1","!"#¥%",88," ̄"], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], +["a6ee","︻︼︷︸︱"], +["a6f4","︳︴"], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], +["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], +["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], +["a8bd","ńň"], +["a8c0","ɡ"], +["a8c5","ㄅ",36], +["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], +["a959","℡㈱"], +["a95c","‐"], +["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], +["a980","﹢",4,"﹨﹩﹪﹫"], +["a996","〇"], +["a9a4","─",75], +["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], +["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], +["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], +["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], +["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], +["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], +["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], +["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], +["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], +["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], +["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], +["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], +["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], +["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], +["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], +["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], +["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], +["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], +["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], +["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], +["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], +["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], +["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], +["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], +["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], +["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], +["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], +["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], +["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], +["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], +["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], +["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], +["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], +["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], +["bb40","籃",9,"籎",36,"籵",5,"籾",9], +["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], +["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], +["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], +["bd40","紷",54,"絯",7], +["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], +["be40","継",12,"綧",6,"綯",42], +["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], +["bf40","緻",62], +["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], +["c040","繞",35,"纃",23,"纜纝纞"], +["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], +["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], +["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], +["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], +["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], +["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], +["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], +["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], +["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], +["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], +["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], +["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], +["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], +["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], +["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], +["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], +["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], +["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], +["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], +["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], +["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], +["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], +["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], +["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], +["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], +["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], +["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], +["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], +["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], +["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], +["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], +["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], +["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], +["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], +["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], +["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], +["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], +["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], +["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], +["d440","訞",31,"訿",8,"詉",21], +["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], +["d540","誁",7,"誋",7,"誔",46], +["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], +["d640","諤",34,"謈",27], +["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], +["d740","譆",31,"譧",4,"譭",25], +["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], +["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], +["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], +["d940","貮",62], +["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], +["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], +["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], +["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], +["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], +["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], +["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], +["dd40","軥",62], +["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], +["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], +["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], +["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], +["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], +["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], +["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], +["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], +["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], +["e240","釦",62], +["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], +["e340","鉆",45,"鉵",16], +["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], +["e440","銨",5,"銯",24,"鋉",31], +["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], +["e540","錊",51,"錿",10], +["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], +["e640","鍬",34,"鎐",27], +["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], +["e740","鏎",7,"鏗",54], +["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], +["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], +["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], +["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], +["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], +["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], +["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], +["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], +["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], +["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], +["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], +["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], +["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], +["ee40","頏",62], +["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], +["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], +["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], +["f040","餈",4,"餎餏餑",28,"餯",26], +["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], +["f140","馌馎馚",10,"馦馧馩",47], +["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], +["f240","駺",62], +["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], +["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], +["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], +["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], +["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], +["f540","魼",62], +["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], +["f640","鯜",62], +["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], +["f740","鰼",62], +["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], +["f840","鳣",62], +["f880","鴢",32], +["f940","鵃",62], +["f980","鶂",32], +["fa40","鶣",62], +["fa80","鷢",32], +["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], +["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], +["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], +["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], +["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], +["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], +["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] +] - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; - } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); - } +},{}],78:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], +["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], +["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], +["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], +["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], +["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], +["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], +["8361","긝",18,"긲긳긵긶긹긻긼"], +["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], +["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], +["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], +["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], +["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], +["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], +["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], +["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], +["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], +["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], +["8741","놞",9,"놩",15], +["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], +["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], +["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], +["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], +["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], +["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], +["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], +["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], +["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], +["8a61","둧",4,"둭",18,"뒁뒂"], +["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], +["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], +["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], +["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], +["8c41","똀",15,"똒똓똕똖똗똙",4], +["8c61","똞",6,"똦",5,"똭",6,"똵",5], +["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], +["8d41","뛃",16,"뛕",8], +["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], +["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], +["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], +["8e61","럂",4,"럈럊",19], +["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], +["8f41","뢅",7,"뢎",17], +["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], +["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], +["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], +["9061","륾",5,"릆릈릋릌릏",15], +["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], +["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], +["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], +["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], +["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], +["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], +["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], +["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], +["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], +["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], +["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], +["9461","봞",5,"봥",6,"봭",12], +["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], +["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], +["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], +["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], +["9641","뺸",23,"뻒뻓"], +["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], +["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], +["9741","뾃",16,"뾕",8], +["9761","뾞",17,"뾱",7], +["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], +["9841","쁀",16,"쁒",5,"쁙쁚쁛"], +["9861","쁝쁞쁟쁡",6,"쁪",15], +["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], +["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], +["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], +["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], +["9a41","숤숥숦숧숪숬숮숰숳숵",16], +["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], +["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], +["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], +["9b61","쌳",17,"썆",7], +["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], +["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], +["9c61","쏿",8,"쐉",6,"쐑",9], +["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], +["9d41","쒪",13,"쒹쒺쒻쒽",8], +["9d61","쓆",25], +["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], +["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], +["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], +["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], +["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], +["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], +["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], +["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], +["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], +["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], +["a141","좥좦좧좩",18,"좾좿죀죁"], +["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], +["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], +["a241","줐줒",5,"줙",18], +["a261","줭",6,"줵",18], +["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], +["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], +["a361","즑",6,"즚즜즞",16], +["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], +["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], +["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], +["a481","쨦쨧쨨쨪",28,"ㄱ",93], +["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], +["a561","쩫",17,"쩾",5,"쪅쪆"], +["a581","쪇",16,"쪙",14,"ⅰ",9], +["a5b0","Ⅰ",9], +["a5c1","Α",16,"Σ",6], +["a5e1","α",16,"σ",6], +["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], +["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], +["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], +["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], +["a761","쬪",22,"쭂쭃쭄"], +["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], +["a841","쭭",10,"쭺",14], +["a861","쮉",18,"쮝",6], +["a881","쮤",19,"쮹",11,"ÆЪĦ"], +["a8a6","IJ"], +["a8a8","ĿŁØŒºÞŦŊ"], +["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], +["a941","쯅",14,"쯕",10], +["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], +["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], +["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], +["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], +["aa81","챳챴챶",29,"ぁ",82], +["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], +["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], +["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], +["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], +["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], +["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], +["acd1","а",5,"ёж",25], +["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], +["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], +["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], +["ae41","췆",5,"췍췎췏췑",16], +["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], +["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], +["af41","츬츭츮츯츲츴츶",19], +["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], +["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], +["b041","캚",5,"캢캦",5,"캮",12], +["b061","캻",5,"컂",19], +["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], +["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], +["b161","켥",6,"켮켲",5,"켹",11], +["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], +["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], +["b261","쾎",18,"쾢",5,"쾩"], +["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], +["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], +["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], +["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], +["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], +["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], +["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], +["b541","킕",14,"킦킧킩킪킫킭",5], +["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], +["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], +["b641","턅",7,"턎",17], +["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], +["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], +["b741","텮",13,"텽",6,"톅톆톇톉톊"], +["b761","톋",20,"톢톣톥톦톧"], +["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], +["b841","퇐",7,"퇙",17], +["b861","퇫",8,"퇵퇶퇷퇹",13], +["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], +["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], +["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], +["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], +["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], +["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], +["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], +["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], +["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], +["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], +["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], +["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], +["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], +["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], +["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], +["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], +["be41","퐸",7,"푁푂푃푅",14], +["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], +["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], +["bf41","풞",10,"풪",14], +["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], +["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], +["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], +["c061","픞",25], +["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], +["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], +["c161","햌햍햎햏햑",19,"햦햧"], +["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], +["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], +["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], +["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], +["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], +["c361","홢",4,"홨홪",5,"홲홳홵",11], +["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], +["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], +["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], +["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], +["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], +["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], +["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], +["c641","힍힎힏힑",6,"힚힜힞",5], +["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], +["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], +["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], +["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], +["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], +["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], +["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], +["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], +["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], +["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], +["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], +["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], +["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], +["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], +["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], +["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], +["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], +["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], +["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], +["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], +["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], +["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], +["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], +["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], +["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], +["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], +["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], +["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], +["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], +["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], +["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], +["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], +["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], +["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], +["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], +["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], +["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], +["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], +["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], +["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], +["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], +["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], +["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], +["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], +["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], +["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], +["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], +["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], +["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], +["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], +["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], +["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], +["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], +["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], +["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] +] - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } - } +},{}],79:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], +["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], +["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], +["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], +["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], +["a3a1","ㄐ",25,"˙ˉˊˇˋ"], +["a3e1","€"], +["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], +["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], +["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], +["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], +["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], +["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], +["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], +["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], +["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], +["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], +["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], +["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], +["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], +["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], +["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], +["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], +["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], +["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], +["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], +["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], +["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], +["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], +["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], +["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], +["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], +["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], +["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], +["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], +["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], +["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], +["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], +["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], +["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], +["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], +["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], +["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], +["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], +["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], +["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], +["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], +["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], +["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], +["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], +["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], +["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], +["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], +["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], +["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], +["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], +["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], +["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], +["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], +["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], +["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], +["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], +["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], +["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], +["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], +["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], +["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], +["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], +["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], +["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], +["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], +["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], +["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], +["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], +["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], +["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], +["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], +["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], +["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], +["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], +["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], +["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], +["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], +["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], +["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], +["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], +["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], +["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], +["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], +["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], +["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], +["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], +["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], +["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], +["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], +["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], +["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], +["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], +["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], +["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], +["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], +["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], +["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], +["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], +["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], +["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], +["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], +["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], +["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], +["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], +["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], +["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], +["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], +["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], +["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], +["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], +["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], +["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], +["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], +["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], +["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], +["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], +["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], +["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], +["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], +["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], +["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], +["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], +["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], +["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], +["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], +["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], +["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], +["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], +["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], +["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], +["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], +["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], +["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], +["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], +["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], +["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], +["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], +["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], +["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], +["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], +["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], +["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], +["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], +["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], +["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], +["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], +["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], +["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], +["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], +["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], +["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], +["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], +["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], +["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], +["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], +["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], +["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], +["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], +["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], +["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], +["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], +["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], +["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], +["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], +["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], +["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], +["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], +["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] +] - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; -} +},{}],80:[function(require,module,exports){ +module.exports=[ +["0","\u0000",127], +["8ea1","。",62], +["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], +["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], +["a2ba","∈∋⊆⊇⊂⊃∪∩"], +["a2ca","∧∨¬⇒⇔∀∃"], +["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["a2f2","ʼn♯♭♪†‡¶"], +["a2fe","◯"], +["a3b0","0",9], +["a3c1","A",25], +["a3e1","a",25], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["ada1","①",19,"Ⅰ",9], +["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], +["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], +["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], +["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], +["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], +["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], +["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], +["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], +["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], +["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], +["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], +["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], +["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], +["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], +["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], +["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], +["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], +["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], +["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], +["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], +["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], +["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], +["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], +["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], +["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], +["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], +["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], +["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], +["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], +["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], +["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], +["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], +["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], +["f4a1","堯槇遙瑤凜熙"], +["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], +["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], +["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["fcf1","ⅰ",9,"¬¦'""], +["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], +["8fa2c2","¡¦¿"], +["8fa2eb","ºª©®™¤№"], +["8fa6e1","ΆΈΉΊΪ"], +["8fa6e7","Ό"], +["8fa6e9","ΎΫ"], +["8fa6ec","Ώ"], +["8fa6f1","άέήίϊΐόςύϋΰώ"], +["8fa7c2","Ђ",10,"ЎЏ"], +["8fa7f2","ђ",10,"ўџ"], +["8fa9a1","ÆĐ"], +["8fa9a4","Ħ"], +["8fa9a6","IJ"], +["8fa9a8","ŁĿ"], +["8fa9ab","ŊØŒ"], +["8fa9af","ŦÞ"], +["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], +["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], +["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], +["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], +["8fabbd","ġĥíìïîǐ"], +["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], +["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], +["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], +["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], +["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], +["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], +["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], +["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], +["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], +["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], +["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], +["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], +["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], +["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], +["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], +["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], +["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], +["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], +["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], +["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], +["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], +["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], +["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], +["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], +["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], +["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], +["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], +["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], +["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], +["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], +["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], +["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], +["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], +["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], +["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], +["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], +["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], +["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], +["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], +["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], +["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], +["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], +["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], +["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], +["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], +["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], +["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], +["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], +["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], +["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], +["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], +["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], +["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], +["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], +["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], +["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], +["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], +["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], +["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], +["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], +["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], +["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], +["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] +] -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; +},{}],81:[function(require,module,exports){ +module.exports={"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} +},{}],82:[function(require,module,exports){ +module.exports=[ +["a140","",62], +["a180","",32], +["a240","",62], +["a280","",32], +["a2ab","",5], +["a2e3","€"], +["a2ef",""], +["a2fd",""], +["a340","",62], +["a380","",31," "], +["a440","",62], +["a480","",32], +["a4f4","",10], +["a540","",62], +["a580","",32], +["a5f7","",7], +["a640","",62], +["a680","",32], +["a6b9","",7], +["a6d9","",6], +["a6ec",""], +["a6f3",""], +["a6f6","",8], +["a740","",62], +["a780","",32], +["a7c2","",14], +["a7f2","",12], +["a896","",10], +["a8bc",""], +["a8bf","ǹ"], +["a8c1",""], +["a8ea","",20], +["a958",""], +["a95b",""], +["a95d",""], +["a989","〾⿰",11], +["a997","",12], +["a9f0","",14], +["aaa1","",93], +["aba1","",93], +["aca1","",93], +["ada1","",93], +["aea1","",93], +["afa1","",93], +["d7fa","",4], +["f8a1","",93], +["f9a1","",93], +["faa1","",93], +["fba1","",93], +["fca1","",93], +["fda1","",93], +["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], +["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] +] - if (uCode >= 0) - this._setEncodeChar(uCode, mbCode); - else if (uCode <= NODE_START) - this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); - else if (uCode <= SEQ_START) - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); - } -} +},{}],83:[function(require,module,exports){ +module.exports=[ +["0","\u0000",128], +["a1","。",62], +["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], +["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], +["81b8","∈∋⊆⊇⊂⊃∪∩"], +["81c8","∧∨¬⇒⇔∀∃"], +["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["81f0","ʼn♯♭♪†‡¶"], +["81fc","◯"], +["824f","0",9], +["8260","A",25], +["8281","a",25], +["829f","ぁ",82], +["8340","ァ",62], +["8380","ム",22], +["839f","Α",16,"Σ",6], +["83bf","α",16,"σ",6], +["8440","А",5,"ЁЖ",25], +["8470","а",5,"ёж",7], +["8480","о",17], +["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["8740","①",19,"Ⅰ",9], +["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["877e","㍻"], +["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], +["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], +["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], +["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], +["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], +["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], +["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], +["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], +["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], +["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], +["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], +["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], +["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], +["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], +["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], +["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], +["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], +["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], +["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], +["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], +["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], +["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], +["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], +["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], +["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], +["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], +["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], +["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], +["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], +["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], +["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], +["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], +["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], +["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], +["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], +["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], +["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["eeef","ⅰ",9,"¬¦'""], +["f040","",62], +["f080","",124], +["f140","",62], +["f180","",124], +["f240","",62], +["f280","",124], +["f340","",62], +["f380","",124], +["f440","",62], +["f480","",124], +["f540","",62], +["f580","",124], +["f640","",62], +["f680","",124], +["f740","",62], +["f780","",124], +["f840","",62], +["f880","",124], +["f940",""], +["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], +["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], +["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], +["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], +["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] +] +},{}],84:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; +// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js -// == Encoder ================================================================== +// == UTF16-BE codec. ========================================================== -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; +exports.utf16be = Utf16BECodec; +function Utf16BECodec() { } -DBCSEncoder.prototype.write = function(str) { - var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } - - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; - - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; - - } else if (resCode == undefined) { // Current character is not part of the sequence. - - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. - - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } +Utf16BECodec.prototype.encoder = Utf16BEEncoder; +Utf16BECodec.prototype.decoder = Utf16BEDecoder; +Utf16BECodec.prototype.bomAware = true; - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } +// -- Encoding - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); +function Utf16BEEncoder() { } -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. - - var newBuf = Buffer.alloc(10), j = 0; - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; +Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer.from(str, 'ucs2'); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; } - - return newBuf.slice(0, j); + return buf; } -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; - - -// == Decoder ================================================================== - -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBuf = Buffer.alloc(0); - - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; +Utf16BEEncoder.prototype.end = function() { } -DBCSDecoder.prototype.write = function(buf) { - var newBuf = Buffer.alloc(buf.length*2), - nodeIdx = this.nodeIdx, - prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, - seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. - uCode; - - if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. - prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; - - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). - uCode = this.defaultCharUnicode.charCodeAt(0); - } - else if (uCode === GB18030_CODE) { - var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode > 0xFFFF) { - uCode -= 0x10000; - var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; - - uCode = 0xDC00 + uCode % 0x400; - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - // Reset trie node. - nodeIdx = 0; seqStart = i+1; - } +// -- Decoding - this.nodeIdx = nodeIdx; - this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); - return newBuf.slice(0, j).toString('ucs2'); +function Utf16BEDecoder() { + this.overflowByte = -1; } -DBCSDecoder.prototype.end = function() { - var ret = ''; - - // Try to parse all remaining chars. - while (this.prevBuf.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var buf = this.prevBuf.slice(1); - - // Parse remaining as usual. - this.prevBuf = Buffer.alloc(0); - this.nodeIdx = 0; - if (buf.length > 0) - ret += this.write(buf); - } - - this.nodeIdx = 0; - return ret; -} +Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ''; -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; + var buf2 = Buffer.alloc(buf.length + 1), + i = 0, j = 0; - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + Math.floor((r-l+1)/2); - if (table[mid] <= val) - l = mid; - else - r = mid; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; j = 2; } - return l; -} - - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-codec.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52,"safer-buffer":118}],78:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'ms31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - 'ms932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', - - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + for (; i < buf.length-1; i += 2, j+= 2) { + buf2[j] = buf[i+1]; + buf2[j+1] = buf[i]; + } - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', + return buf2.slice(0, j).toString('ucs2'); +} - // Microsoft's CP936 is a subset and approximation of GBK. - 'windows936': 'cp936', - 'ms936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, +Utf16BEDecoder.prototype.end = function() { +} - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - 'isoir58': 'gbk', - // GB18030 is an algorithmic extension of GBK. - // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - encodeSkipVals: [0x80], - encodeAdd: {'€': 0xA2E3}, - }, +// == UTF-16 codec ============================================================= +// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. +// Defaults to UTF-16LE, as it's prevalent and default in Node. +// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le +// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - 'chinese': 'gb18030', +// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). +exports.utf16 = Utf16Codec; +function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; +} - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - 'ms949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, +Utf16Codec.prototype.encoder = Utf16Encoder; +Utf16Codec.prototype.decoder = Utf16Decoder; - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', +// -- Encoding (pass-through) - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. +function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === undefined) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder('utf-16le', options); +} - 'windows950': 'cp950', - 'ms950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, +Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); +} - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [0xa2cc], - }, +Utf16Encoder.prototype.end = function() { + return this.encoder.end(); +} - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', -}; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/dbcs-data.js","/node_modules/iconv-lite/encodings") -},{"./tables/big5-added.json":84,"./tables/cp936.json":85,"./tables/cp949.json":86,"./tables/cp950.json":87,"./tables/eucjp.json":88,"./tables/gb18030-ranges.json":89,"./tables/gbk-added.json":90,"./tables/shiftjis.json":91,"FWaASH":50,"buffer":52}],79:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; +// -- Decoding -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; +function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBytes = []; + this.initialBytesLen = 0; -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; + this.options = options || {}; + this.iconv = codec.iconv; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/index.js","/node_modules/iconv-lite/encodings") -},{"./dbcs-codec":77,"./dbcs-data":78,"./internal":80,"./sbcs-codec":81,"./sbcs-data":83,"./sbcs-data-generated":82,"./utf16":92,"./utf7":93,"FWaASH":50,"buffer":52}],80:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; +Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBytes.push(buf); + this.initialBytesLen += buf.length; + + if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) + return ''; -// Export Node.js internal encodings. + // We have enough bytes -> detect endianness. + var buf = Buffer.concat(this.initialBytes), + encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + this.initialBytes.length = this.initialBytesLen = 0; + } -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", + return this.decoder.write(buf); +} - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", +Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var buf = Buffer.concat(this.initialBytes), + encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, + var res = this.decoder.write(buf), + trail = this.decoder.end(); - // Codec. - _internal: InternalCodec, -}; + return trail ? (res + trail) : res; + } + return this.decoder.end(); +} -//------------------------------------------------------------------------------ +function detectEncoding(buf, defaultEncoding) { + var enc = defaultEncoding || 'utf-16le'; -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; + if (buf.length >= 2) { + // Check BOM. + if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM + enc = 'utf-16be'; + else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM + enc = 'utf-16le'; + else { + // No BOM found. Try to deduce encoding from initial content. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions + _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; + for (var i = 0; i < _len; i += 2) { + if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; + if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; + } - // Add decoder for versions of Node not supporting CESU-8 - if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; + if (asciiCharsBE > asciiCharsLE) + enc = 'utf-16be'; + else if (asciiCharsBE < asciiCharsLE) + enc = 'utf-16le'; } } + + return enc; } -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; -//------------------------------------------------------------------------------ -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf16.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],85:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("safer-buffer").Buffer; -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; +// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 +// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 +exports.utf7 = Utf7Codec; +exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 +function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; +}; -function InternalDecoder(options, codec) { - StringDecoder.call(this, codec.enc); -} +Utf7Codec.prototype.encoder = Utf7Encoder; +Utf7Codec.prototype.decoder = Utf7Decoder; +Utf7Codec.prototype.bomAware = true; -InternalDecoder.prototype = StringDecoder.prototype; +// -- Encoding -//------------------------------------------------------------------------------ -// Encoder is mostly trivial +var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; -function InternalEncoder(options, codec) { - this.enc = codec.enc; +function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; } -InternalEncoder.prototype.write = function(str) { - return Buffer.from(str, this.enc); +Utf7Encoder.prototype.write = function(str) { + // Naive implementation. + // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". + return Buffer.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === '+' ? '' : + this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) + + "-"; + }.bind(this))); } -InternalEncoder.prototype.end = function() { +Utf7Encoder.prototype.end = function() { } -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. +// -- Decoding -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; +function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; } -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); +var base64Regex = /[A-Za-z0-9\/+]/; +var base64Chars = []; +for (var i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - return Buffer.from(str, "base64"); -} +var plusChar = '+'.charCodeAt(0), + minusChar = '-'.charCodeAt(0), + andChar = '&'.charCodeAt(0); -InternalEncoderBase64.prototype.end = function() { - return Buffer.from(this.prevStr, "base64"); -} +Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + // The decoder is more involved as we must handle chunks in stream. -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '+' + if (buf[i] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64Chars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" + res += "+"; + } else { + var b64str = base64Accum + buf.slice(lastI, i).toString(); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } -function InternalEncoderCesu8(options, codec) { -} + if (buf[i] != minusChar) // Minus is absorbed after base64. + i--; -InternalEncoderCesu8.prototype.write = function(str) { - var buf = Buffer.alloc(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } } } - return buf.slice(0, bufIdx); + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + buf.slice(lastI).toString(); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; } -InternalEncoderCesu8.prototype.end = function() { +Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; } -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; +// UTF-7-IMAP codec. +// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) +// Differences: +// * Base64 part is started by "&" instead of "+" +// * Direct characters are 0x20-0x7E, except "&" (0x26) +// * In Base64, "," is used instead of "/" +// * Base64 must not be used to represent direct characters. +// * No implicit shift back from Base64 (should always end with '-') +// * String must end in non-shifted position. +// * "-&" while in base64 is not allowed. + + +exports.utf7imap = Utf7IMAPCodec; +function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; +}; + +Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; +Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; +Utf7IMAPCodec.prototype.bomAware = true; + + +// -- Encoding + +function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer.alloc(6); + this.base64AccumIdx = 0; } -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } +Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, + base64Accum = this.base64Accum, + base64AccumIdx = this.base64AccumIdx, + buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); + for (var i = 0; i < str.length; i++) { + var uChar = str.charCodeAt(i); + if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + base64AccumIdx = 0; } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + inBase64 = false; } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} + if (!inBase64) { + buf[bufIdx++] = uChar; // Write direct character -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/internal.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52,"safer-buffer":118,"string_decoder":51}],81:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; + if (uChar === andChar) // Ampersand -> '&-' + buf[bufIdx++] = minusChar; + } -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). + } else { // Non-direct character + if (!inBase64) { + buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 0xFF; -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); + base64AccumIdx = 0; + } + } + } } - this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); - - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; - this.encodeBuf = encodeBuf; + return buf.slice(0, bufIdx); } -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; - - -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} +Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + this.base64AccumIdx = 0; + } -SBCSEncoder.prototype.write = function(str) { - var buf = Buffer.alloc(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + this.inBase64 = false; + } -SBCSEncoder.prototype.end = function() { + return buf.slice(0, bufIdx); } -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} - -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = Buffer.alloc(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; - } - return newBuf.toString('ucs2'); -} +// -- Decoding -SBCSDecoder.prototype.end = function() { +function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-codec.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52,"safer-buffer":118}],82:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "macgreek": { - "type": "_sbcs", - "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" - }, - "maciceland": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macroman": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macromania": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macthai": { - "type": "_sbcs", - "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" - }, - "macturkish": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macukraine": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "koi8r": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "georgianps": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "pt154": { - "type": "_sbcs", - "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "hproman8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" - }, - "macintosh": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "ascii": { - "type": "_sbcs", - "chars": "��������������������������������������������������������������������������������������������������������������������������������" - }, - "tis620": { - "type": "_sbcs", - "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - } +var base64IMAPChars = base64Chars.slice(); +base64IMAPChars[','.charCodeAt(0)] = true; + +Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + + // The decoder is more involved as we must handle chunks in stream. + // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '&' + if (buf[i] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64IMAPChars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" + res += "&"; + } else { + var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + if (buf[i] != minusChar) // Minus may be absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; +} + +Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data-generated.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52}],83:[function(require,module,exports){ + + + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf7.js","/node_modules/iconv-lite/encodings") +},{"buffer":57,"lYpoI2":59,"safer-buffer":110}],86:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ "use strict"; -// Manually added data to be used by sbcs codec in addition to generated one. +var BOMChar = '\uFEFF'; -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - }, +exports.PrependBOM = PrependBOMWrapper +function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; +} - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " - }, +PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } - "mik": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, + return this.encoder.write(str); +} - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", +PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); +} - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", +//------------------------------------------------------------------------------ - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", +exports.StripBOM = StripBOMWrapper; +function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; +} - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", +StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === 'function') + this.options.stripBOM(); + } + + this.pass = true; + return res; +} + +StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); +} + + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/bom-handling.js","/node_modules/iconv-lite/lib") +},{"buffer":57,"lYpoI2":59}],87:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; +var Buffer = require("buffer").Buffer; +// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer + +// == Extend Node primitives to use iconv-lite ================================= + +module.exports = function (iconv) { + var original = undefined; // Place to keep original methods. + + // Node authors rewrote Buffer internals to make it compatible with + // Uint8Array and we cannot patch key functions since then. + // Note: this does use older Buffer API on a purpose + iconv.supportsNodeEncodingsExtension = !(new Buffer(0) instanceof Uint8Array); + + iconv.extendNodeEncodings = function extendNodeEncodings() { + if (original) return; + original = {}; + + if (!iconv.supportsNodeEncodingsExtension) { + console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); + console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); + return; + } + + var nodeNativeEncodings = { + 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, + 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, + }; + + Buffer.isNativeEncoding = function(enc) { + return enc && nodeNativeEncodings[enc.toLowerCase()]; + } + + // -- SlowBuffer ----------------------------------------------------------- + var SlowBuffer = require('buffer').SlowBuffer; + + original.SlowBufferToString = SlowBuffer.prototype.toString; + SlowBuffer.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.SlowBufferToString.call(this, encoding, start, end); + + // Otherwise, use our decoding method. + if (typeof start == 'undefined') start = 0; + if (typeof end == 'undefined') end = this.length; + return iconv.decode(this.slice(start, end), encoding); + } + + original.SlowBufferWrite = SlowBuffer.prototype.write; + SlowBuffer.prototype.write = function(string, offset, length, encoding) { + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = undefined; + } + } else { // legacy + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; + } else { + length = +length; + if (length > remaining) { + length = remaining; + } + } + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.SlowBufferWrite.call(this, string, offset, length, encoding); + + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError('attempt to write beyond buffer bounds'); + + // Otherwise, use our encoding method. + var buf = iconv.encode(string, encoding); + if (buf.length < length) length = buf.length; + buf.copy(this, offset, 0, length); + return length; + } + + // -- Buffer --------------------------------------------------------------- + + original.BufferIsEncoding = Buffer.isEncoding; + Buffer.isEncoding = function(encoding) { + return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); + } + + original.BufferByteLength = Buffer.byteLength; + Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferByteLength.call(this, str, encoding); + + // Slow, I know, but we don't have a better way yet. + return iconv.encode(str, encoding).length; + } + + original.BufferToString = Buffer.prototype.toString; + Buffer.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferToString.call(this, encoding, start, end); + + // Otherwise, use our decoding method. + if (typeof start == 'undefined') start = 0; + if (typeof end == 'undefined') end = this.length; + return iconv.decode(this.slice(start, end), encoding); + } + + original.BufferWrite = Buffer.prototype.write; + Buffer.prototype.write = function(string, offset, length, encoding) { + var _offset = offset, _length = length, _encoding = encoding; + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = undefined; + } + } else { // legacy + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + + encoding = String(encoding || 'utf8').toLowerCase(); + + // Use native conversion when possible + if (Buffer.isNativeEncoding(encoding)) + return original.BufferWrite.call(this, string, _offset, _length, _encoding); + + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; + } else { + length = +length; + if (length > remaining) { + length = remaining; + } + } + + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError('attempt to write beyond buffer bounds'); + + // Otherwise, use our encoding method. + var buf = iconv.encode(string, encoding); + if (buf.length < length) length = buf.length; + buf.copy(this, offset, 0, length); + return length; + + // TODO: Set _charsWritten. + } + + + // -- Readable ------------------------------------------------------------- + if (iconv.supportsStreams) { + var Readable = require('stream').Readable; + + original.ReadableSetEncoding = Readable.prototype.setEncoding; + Readable.prototype.setEncoding = function setEncoding(enc, options) { + // Use our own decoder, it has the same interface. + // We cannot use original function as it doesn't handle BOM-s. + this._readableState.decoder = iconv.getDecoder(enc, options); + this._readableState.encoding = enc; + } + + Readable.prototype.collect = iconv._collect; + } + } + + // Remove iconv-lite Node primitive extensions. + iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { + if (!iconv.supportsNodeEncodingsExtension) + return; + if (!original) + throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") + + delete Buffer.isNativeEncoding; + + var SlowBuffer = require('buffer').SlowBuffer; + + SlowBuffer.prototype.toString = original.SlowBufferToString; + SlowBuffer.prototype.write = original.SlowBufferWrite; + + Buffer.isEncoding = original.BufferIsEncoding; + Buffer.byteLength = original.BufferByteLength; + Buffer.prototype.toString = original.BufferToString; + Buffer.prototype.write = original.BufferWrite; + + if (iconv.supportsStreams) { + var Readable = require('stream').Readable; + + Readable.prototype.setEncoding = original.ReadableSetEncoding; + delete Readable.prototype.collect; + } + + original = undefined; + } +} + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/extend-node.js","/node_modules/iconv-lite/lib") +},{"buffer":57,"lYpoI2":59,"stream":61}],88:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; + +// Some environments don't have global Buffer (e.g. React Native). +// Solution would be installing npm modules "buffer" and "stream" explicitly. +var Buffer = require("safer-buffer").Buffer; + +var bomHandling = require("./bom-handling"), + iconv = module.exports; + +// All codecs and aliases are kept here, keyed by encoding name/alias. +// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. +iconv.encodings = null; + +// Characters emitted in case of error. +iconv.defaultCharUnicode = '�'; +iconv.defaultCharSingleByte = '?'; + +// Public API. +iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); // Ensure string. + + var encoder = iconv.getEncoder(encoding, options); + + var res = encoder.write(str); + var trail = encoder.end(); + + return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; +} + +iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === 'string') { + if (!iconv.skipDecodeWarning) { + console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); + iconv.skipDecodeWarning = true; + } + + buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. + } + + var decoder = iconv.getDecoder(encoding, options); + + var res = decoder.write(buf); + var trail = decoder.end(); + + return trail ? (res + trail) : res; +} + +iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } +} + +// Legacy aliases to convert functions +iconv.toEncoding = iconv.encode; +iconv.fromEncoding = iconv.decode; + +// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. +iconv._codecDataCache = {}; +iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. + + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + var enc = iconv._canonicalizeEncoding(encoding); + + // Traverse iconv.encodings to find actual codec. + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + + var codecDef = iconv.encodings[enc]; + + switch (typeof codecDef) { + case "string": // Direct alias to other encoding. + enc = codecDef; + break; + + case "object": // Alias with options. Can be layered. + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + enc = codecDef.type; + break; + + case "function": // Codec itself. + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + // The codec function must load all tables and return object with .encoder and .decoder methods. + // It'll be called only once (for each different options object). + codec = new codecDef(codecOptions, iconv); + + iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. + return codec; + + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); + } + } +} - "cp819": "iso88591", - "ibm819": "iso88591", +iconv._canonicalizeEncoding = function(encoding) { + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); +} - "cyrillic": "iso88595", +iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), + encoder = new codec.encoder(options, codec); - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", + return encoder; +} - "hebrew": "iso88598", - "hebrew8": "iso88598", +iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), + decoder = new codec.decoder(options, codec); - "turkish": "iso88599", - "turkish8": "iso88599", + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); - "thai": "iso885911", - "thai8": "iso885911", + return decoder; +} - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", +// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. +var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; +if (nodeVer) { - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", + // Load streaming support in Node v0.10+ + var nodeVerArr = nodeVer.split(".").map(Number); + if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { + require("./streams")(iconv); + } - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", + // Load Node primitive extensions. + require("./extend-node")(iconv); +} - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", +if ("Ā" != "\u0100") { + console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); +} - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/index.js","/node_modules/iconv-lite/lib") +},{"../encodings":71,"./bom-handling":86,"./extend-node":87,"./streams":89,"buffer":57,"lYpoI2":59,"safer-buffer":110}],89:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +"use strict"; - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", +var Buffer = require("buffer").Buffer, + Transform = require("stream").Transform; - "strk10482002": "rk1048", - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", +// == Exports ================================================================== +module.exports = function(iconv) { + + // Additional Public API. + iconv.encodeStream = function encodeStream(encoding, options) { + return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + } - "gb198880": "iso646cn", - "cn": "iso646cn", + iconv.decodeStream = function decodeStream(encoding, options) { + return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + } - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", + iconv.supportsStreams = true; - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", - "mac": "macintosh", - "csmacintosh": "macintosh", + // Not published yet. + iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; + iconv._collect = IconvLiteDecoderStream.prototype.collect; }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/sbcs-data.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52}],84:[function(require,module,exports){ -module.exports=[ -["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], -["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], -["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], -["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], -["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], -["8940","𪎩𡅅"], -["8943","攊"], -["8946","丽滝鵎釟"], -["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], -["89a1","琑糼緍楆竉刧"], -["89ab","醌碸酞肼"], -["89b0","贋胶𠧧"], -["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], -["89c1","溚舾甙"], -["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], -["8a40","𧶄唥"], -["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], -["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], -["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], -["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], -["8aac","䠋𠆩㿺塳𢶍"], -["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], -["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], -["8ac9","𪘁𠸉𢫏𢳉"], -["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], -["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], -["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], -["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], -["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], -["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], -["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], -["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], -["8ca1","𣏹椙橃𣱣泿"], -["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], -["8cc9","顨杫䉶圽"], -["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], -["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], -["8d40","𠮟"], -["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], -["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], -["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], -["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], -["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], -["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], -["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], -["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], -["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], -["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], -["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], -["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], -["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], -["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], -["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], -["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], -["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], -["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], -["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], -["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], -["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], -["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], -["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], -["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], -["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], -["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], -["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], -["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], -["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], -["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], -["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], -["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], -["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], -["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], -["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], -["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], -["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], -["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], -["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], -["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], -["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], -["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], -["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], -["9fae","酙隁酜"], -["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], -["9fc1","𤤙盖鮝个𠳔莾衂"], -["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], -["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], -["9fe7","毺蠘罸"], -["9feb","嘠𪙊蹷齓"], -["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], -["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], -["a055","𡠻𦸅"], -["a058","詾𢔛"], -["a05b","惽癧髗鵄鍮鮏蟵"], -["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], -["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], -["a0a1","嵗𨯂迚𨸹"], -["a0a6","僙𡵆礆匲阸𠼻䁥"], -["a0ae","矾"], -["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], -["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], -["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], -["a3c0","␀",31,"␡"], -["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], -["c740","す",58,"ァアィイ"], -["c7a1","ゥ",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], -["c8a1","龰冈龱𧘇"], -["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], -["c8f5","ʃɐɛɔɵœøŋʊɪ"], -["f9fe","■"], -["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], -["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], -["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], -["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], -["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], -["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], -["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], -["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], -["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], -["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] -] +// == Encoder stream ======================================================= +function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; // We accept only strings, so we don't need to decode them. + Transform.call(this, options); +} -},{}],85:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127,"€"], -["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], -["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], -["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], -["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], -["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], -["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], -["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], -["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], -["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], -["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], -["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], -["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], -["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], -["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], -["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], -["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], -["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], -["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], -["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], -["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], -["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], -["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], -["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], -["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], -["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], -["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], -["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], -["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], -["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], -["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], -["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], -["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], -["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], -["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], -["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], -["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], -["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], -["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], -["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], -["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], -["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], -["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], -["9980","檧檨檪檭",114,"欥欦欨",6], -["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], -["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], -["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], -["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], -["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], -["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], -["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], -["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], -["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], -["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], -["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], -["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], -["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑴",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","!"#¥%",88," ̄"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], -["a6ee","︻︼︷︸︱"], -["a6f4","︳︴"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], -["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], -["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], -["a8bd","ńň"], -["a8c0","ɡ"], -["a8c5","ㄅ",36], -["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], -["a959","℡㈱"], -["a95c","‐"], -["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], -["a980","﹢",4,"﹨﹩﹪﹫"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], -["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], -["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], -["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], -["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], -["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], -["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], -["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], -["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], -["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], -["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], -["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], -["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], -["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], -["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], -["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], -["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], -["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], -["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], -["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], -["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], -["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], -["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], -["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], -["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], -["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], -["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], -["bb40","籃",9,"籎",36,"籵",5,"籾",9], -["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], -["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], -["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], -["bd40","紷",54,"絯",7], -["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], -["be40","継",12,"綧",6,"綯",42], -["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], -["bf40","緻",62], -["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], -["c040","繞",35,"纃",23,"纜纝纞"], -["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], -["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], -["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], -["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], -["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], -["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], -["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], -["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], -["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], -["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], -["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], -["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], -["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], -["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], -["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], -["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], -["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], -["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], -["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], -["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], -["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], -["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], -["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], -["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], -["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], -["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], -["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], -["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], -["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], -["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], -["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], -["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], -["d440","訞",31,"訿",8,"詉",21], -["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], -["d540","誁",7,"誋",7,"誔",46], -["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], -["d640","諤",34,"謈",27], -["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], -["d740","譆",31,"譧",4,"譭",25], -["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], -["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], -["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], -["d940","貮",62], -["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], -["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], -["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], -["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], -["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], -["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], -["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], -["dd40","軥",62], -["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], -["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], -["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], -["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], -["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], -["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], -["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], -["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], -["e240","釦",62], -["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], -["e340","鉆",45,"鉵",16], -["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], -["e440","銨",5,"銯",24,"鋉",31], -["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], -["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], -["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], -["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], -["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], -["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], -["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], -["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], -["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], -["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], -["ee40","頏",62], -["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], -["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], -["f040","餈",4,"餎餏餑",28,"餯",26], -["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], -["f140","馌馎馚",10,"馦馧馩",47], -["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], -["f240","駺",62], -["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], -["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], -["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], -["f540","魼",62], -["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], -["f640","鯜",62], -["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], -["f740","鰼",62], -["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], -["f840","鳣",62], -["f880","鴢",32], -["f940","鵃",62], -["f980","鶂",32], -["fa40","鶣",62], -["fa80","鷢",32], -["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], -["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], -["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], -["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], -["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], -["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], -["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] -] +IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } +}); + +IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != 'string') + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } +} -},{}],86:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], -["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], -["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], -["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], -["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], -["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], -["8361","긝",18,"긲긳긵긶긹긻긼"], -["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], -["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], -["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], -["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], -["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], -["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], -["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], -["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], -["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], -["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], -["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], -["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똦",5,"똭",6,"똵",5], -["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], -["8f41","뢅",7,"뢎",17], -["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], -["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], -["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], -["9061","륾",5,"릆릈릋릌릏",15], -["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], -["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], -["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], -["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], -["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], -["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], -["9461","봞",5,"봥",6,"봭",12], -["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], -["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], -["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], -["9641","뺸",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], -["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], -["9741","뾃",16,"뾕",8], -["9761","뾞",17,"뾱",7], -["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","쁝쁞쁟쁡",6,"쁪",15], -["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], -["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], -["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], -["9a41","숤숥숦숧숪숬숮숰숳숵",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], -["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], -["9b61","쌳",17,"썆",7], -["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], -["9c61","쏿",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","쒪",13,"쒹쒺쒻쒽",8], -["9d61","쓆",25], -["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], -["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], -["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], -["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], -["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], -["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], -["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], -["a141","좥좦좧좩",18,"좾좿죀죁"], -["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], -["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], -["a241","줐줒",5,"줙",18], -["a261","줭",6,"줵",18], -["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], -["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], -["a361","즑",6,"즚즜즞",16], -["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], -["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], -["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], -["a481","쨦쨧쨨쨪",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], -["a561","쩫",17,"쩾",5,"쪅쪆"], -["a581","쪇",16,"쪙",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"Σ",6], -["a5e1","α",16,"σ",6], -["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], -["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], -["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], -["a761","쬪",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], -["a841","쭭",10,"쭺",14], -["a861","쮉",18,"쮝",6], -["a881","쮤",19,"쮹",11,"ÆЪĦ"], -["a8a6","IJ"], -["a8a8","ĿŁØŒºÞŦŊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], -["a941","쯅",14,"쯕",10], -["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], -["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], -["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], -["aa81","챳챴챶",29,"ぁ",82], -["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], -["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], -["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], -["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], -["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], -["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], -["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], -["af41","츬츭츮츯츲츴츶",19], -["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], -["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], -["b041","캚",5,"캢캦",5,"캮",12], -["b061","캻",5,"컂",19], -["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], -["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], -["b161","켥",6,"켮켲",5,"켹",11], -["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], -["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], -["b261","쾎",18,"쾢",5,"쾩"], -["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], -["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], -["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], -["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], -["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], -["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], -["b541","킕",14,"킦킧킩킪킫킭",5], -["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], -["b641","턅",7,"턎",17], -["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], -["b741","텮",13,"텽",6,"톅톆톇톉톊"], -["b761","톋",20,"톢톣톥톦톧"], -["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇵퇶퇷퇹",13], -["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], -["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], -["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], -["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], -["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], -["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], -["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], -["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], -["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], -["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], -["be41","퐸",7,"푁푂푃푅",14], -["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], -["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], -["bf41","풞",10,"풪",14], -["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], -["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], -["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햦햧"], -["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], -["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], -["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], -["c361","홢",4,"홨홪",5,"홲홳홵",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], -["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], -["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], -["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], -["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], -["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], -["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], -["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], -["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], -["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], -["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], -["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], -["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], -["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], -["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], -["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], -["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], -["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], -["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], -["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], -["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], -["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], -["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], -["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], -["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], -["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], -["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], -["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], -["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], -["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], -["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], -["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], -["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], -["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], -["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], -["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], -["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], -["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], -["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], -["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], -["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], -["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], -["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], -["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], -["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], -["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], -["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], -["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], -["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], -["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], -["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], -["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], -["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], -["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], -["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], -["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], -["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], -["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], -["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] -] +IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } +} + +IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on('error', cb); + this.on('data', function(chunk) { chunks.push(chunk); }); + this.on('end', function() { + cb(null, Buffer.concat(chunks)); + }); + return this; +} + + +// == Decoder stream ======================================================= +function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = 'utf8'; // We output strings. + Transform.call(this, options); +} + +IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } +}); + +IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer.isBuffer(chunk)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } +} + +IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } +} + +IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ''; + this.on('error', cb); + this.on('data', function(chunk) { res += chunk; }); + this.on('end', function() { + cb(null, res); + }); + return this; +} + + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/streams.js","/node_modules/iconv-lite/lib") +},{"buffer":57,"lYpoI2":59,"stream":61}],90:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ieee754/index.js","/node_modules/ieee754") +},{"buffer":57,"lYpoI2":59}],91:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/inherits/inherits_browser.js","/node_modules/inherits") +},{"buffer":57,"lYpoI2":59}],92:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +'use strict'; + +var traverse = module.exports = function (schema, opts, cb) { + // Legacy support for v0.3.1 and earlier. + if (typeof opts == 'function') { + cb = opts; + opts = {}; + } + + cb = opts.cb || cb; + var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; + var post = cb.post || function() {}; + + _traverse(opts, pre, post, schema, '', schema); +}; + + +traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true +}; + +traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true +}; + +traverse.propsKeywords = { + definitions: true, + properties: true, + patternProperties: true, + dependencies: true +}; + +traverse.skipKeywords = { + default: true, + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true +}; -},{}],87:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], -["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], -["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], -["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], -["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], -["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], -["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], -["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], -["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], -["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], -["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], -["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], -["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], -["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], -["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], -["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], -["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], -["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], -["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], -["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], -["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], -["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], -["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], -["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], -["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], -["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], -["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], -["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], -["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], -["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], -["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], -["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], -["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], -["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], -["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], -["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], -["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], -["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], -["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], -["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], -["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], -["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], -["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], -["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], -["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], -["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], -["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], -["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], -["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], -["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], -["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], -["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], -["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], -["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], -["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], -["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], -["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], -["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], -["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], -["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], -["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], -["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], -["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], -["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], -["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], -["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], -["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], -["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], -["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], -["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], -["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], -["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], -["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], -["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], -["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], -["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], -["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], -["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], -["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], -["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], -["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], -["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], -["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], -["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], -["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], -["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], -["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], -["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], -["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], -["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], -["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], -["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], -["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], -["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], -["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], -["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], -["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], -["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], -["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], -["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], -["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], -["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], -["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], -["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], -["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], -["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], -["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], -["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], -["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], -["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], -["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], -["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], -["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], -["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], -["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], -["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], -["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], -["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], -["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], -["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], -["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], -["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], -["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], -["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], -["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], -["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], -["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], -["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], -["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], -["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], -["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], -["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], -["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], -["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], -["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], -["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], -["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], -["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], -["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], -["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], -["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], -["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], -["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], -["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], -["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], -["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], -["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], -["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], -["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], -["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], -["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], -["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], -["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], -["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], -["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], -["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], -["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], -["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], -["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], -["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], -["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], -["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], -["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], -["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], -["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], -["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], -["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], -["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] -] -},{}],88:[function(require,module,exports){ -module.exports=[ -["0","\u0000",127], -["8ea1","。",62], -["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], -["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], -["a2ba","∈∋⊆⊇⊂⊃∪∩"], -["a2ca","∧∨¬⇒⇔∀∃"], -["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["a2f2","ʼn♯♭♪†‡¶"], -["a2fe","◯"], -["a3b0","0",9], -["a3c1","A",25], -["a3e1","a",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["ada1","①",19,"Ⅰ",9], -["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], -["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], -["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], -["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], -["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], -["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], -["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], -["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], -["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], -["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], -["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], -["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], -["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], -["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], -["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], -["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], -["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], -["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], -["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], -["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], -["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], -["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], -["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], -["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], -["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], -["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], -["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], -["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], -["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], -["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], -["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], -["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], -["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], -["f4a1","堯槇遙瑤凜熙"], -["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], -["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], -["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["fcf1","ⅰ",9,"¬¦'""], -["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], -["8fa2c2","¡¦¿"], -["8fa2eb","ºª©®™¤№"], -["8fa6e1","ΆΈΉΊΪ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","άέήίϊΐόςύϋΰώ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","Ħ"], -["8fa9a6","IJ"], -["8fa9a8","ŁĿ"], -["8fa9ab","ŊØŒ"], -["8fa9af","ŦÞ"], -["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], -["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], -["8fabbd","ġĥíìïîǐ"], -["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], -["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], -["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], -["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], -["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], -["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], -["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], -["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], -["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], -["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], -["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], -["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], -["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], -["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], -["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], -["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], -["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], -["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], -["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], -["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], -["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], -["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], -["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], -["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], -["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], -["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], -["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], -["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], -["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], -["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], -["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], -["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], -["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], -["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], -["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], -["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], -["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], -["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], -["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], -["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], -["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], -["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], -["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], -["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], -["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], -["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], -["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], -["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], -["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], -["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], -["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], -["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], -["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], -["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], -["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], -["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], -["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], -["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], -["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], -["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] -] +function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == 'object' && !Array.isArray(schema)) { + pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i=0; i + Copyright (C) 2013 Thaddee Tyl + Copyright (C) 2013 Mathias Bynens + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwErrorTolerant: true, +throwError: true, generateStatement: true, peek: true, +parseAssignmentExpression: true, parseBlock: true, parseExpression: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseLeftHandSideExpression: true, +parseUnaryExpression: true, +parseStatement: true, parseSourceElement: true */ + +(function (root, factory) { + 'use strict'; + + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // Rhino, and plain browser loading. + + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((root.esprima = {})); + } +}(this, function (exports) { + 'use strict'; + + var Token, + TokenName, + FnExprTokens, + Syntax, + PropertyKind, + Messages, + Regex, + SyntaxTreeDelegate, + source, + strict, + index, + lineNumber, + lineStart, + length, + delegate, + lookahead, + state, + extra; + + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8, + RegularExpression: 9 + }; + + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + TokenName[Token.RegularExpression] = 'RegularExpression'; + + // A function following one of those tokens is an expression. + FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', + 'return', 'case', 'delete', 'throw', 'void', + // assignment operators + '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', + '&=', '|=', '^=', ',', + // binary/unary operators + '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', + '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', + '<=', '<', '>', '!=', '!==']; -},{}],89:[function(require,module,exports){ -module.exports={"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} -},{}],90:[function(require,module,exports){ -module.exports=[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc",""], -["a8bf","ǹ"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","〾⿰",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], -["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] -] + Syntax = { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + }; -},{}],91:[function(require,module,exports){ -module.exports=[ -["0","\u0000",128], -["a1","。",62], -["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], -["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], -["81b8","∈∋⊆⊇⊂⊃∪∩"], -["81c8","∧∨¬⇒⇔∀∃"], -["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["81f0","ʼn♯♭♪†‡¶"], -["81fc","◯"], -["824f","0",9], -["8260","A",25], -["8281","a",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"Σ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","о",17], -["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["8740","①",19,"Ⅰ",9], -["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["877e","㍻"], -["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], -["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], -["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], -["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], -["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], -["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], -["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], -["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], -["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], -["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], -["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], -["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], -["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], -["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], -["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], -["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], -["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], -["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], -["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], -["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], -["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], -["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], -["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], -["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], -["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], -["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], -["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], -["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], -["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], -["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], -["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], -["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], -["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], -["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], -["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], -["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], -["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["eeef","ⅰ",9,"¬¦'""], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], -["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], -["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], -["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], -["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] -] + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; -},{}],92:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalReturn: 'Illegal return statement', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode' + }; -// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), + NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') + }; -// == UTF16-BE codec. ========================================================== + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} + function assert(condition, message) { + /* istanbul ignore if */ + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; + function isDecimalDigit(ch) { + return (ch >= 48 && ch <= 57); // 0..9 + } + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } -// -- Encoding + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } -function Utf16BEEncoder() { -} -Utf16BEEncoder.prototype.write = function(str) { - var buf = Buffer.from(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; + // 7.2 White Space + + function isWhiteSpace(ch) { + return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || + (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); } - return buf; -} -Utf16BEEncoder.prototype.end = function() { -} + // 7.3 Line Terminators + function isLineTerminator(ch) { + return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); + } -// -- Decoding + // 7.6 Identifier Names and Identifiers -function Utf16BEDecoder() { - this.overflowByte = -1; -} + function isIdentifierStart(ch) { + return (ch == 0x40) || (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); + } -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; + function isIdentifierPart(ch) { + return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch >= 0x30 && ch <= 0x39) || // 0..9 + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); + } - var buf2 = Buffer.alloc(buf.length + 1), - i = 0, j = 0; + // 7.6.1.2 Future Reserved Words - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; + function isFutureReservedWord(id) { + switch (id) { + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + default: + return false; + } } - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; + function isStrictModeReservedWord(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + default: + return false; + } } - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } - return buf2.slice(0, j).toString('ucs2'); -} + // 7.6.1.1 Keywords -Utf16BEDecoder.prototype.end = function() { -} + function isKeyword(id) { + if (strict && isStrictModeReservedWord(id)) { + return true; + } + // 'const' is specialized as Keyword in V8. + // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. + // Some others are from future reserved words. -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || + (id === 'try') || (id === 'let'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). + // 7.4 Comments -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; -} + function addComment(type, value, start, end, loc) { + var comment, attacher; -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (state.lastCommentStart >= start) { + return; + } + state.lastCommentStart = start; + comment = { + type: type, + value: value + }; + if (extra.range) { + comment.range = [start, end]; + } + if (extra.loc) { + comment.loc = loc; + } + extra.comments.push(comment); + if (extra.attachComment) { + extra.leadingComments.push(comment); + extra.trailingComments.push(comment); + } + } -// -- Encoding (pass-through) + function skipSingleLineComment(offset) { + var start, loc, ch, comment; -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); -} + start = index - offset; + loc = { + start: { + line: lineNumber, + column: index - lineStart - offset + } + }; -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} + while (index < length) { + ch = source.charCodeAt(index); + ++index; + if (isLineTerminator(ch)) { + if (extra.comments) { + comment = source.slice(start + offset, index - 1); + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + addComment('Line', comment, start, index - 1, loc); + } + if (ch === 13 && source.charCodeAt(index) === 10) { + ++index; + } + ++lineNumber; + lineStart = index; + return; + } + } + + if (extra.comments) { + comment = source.slice(start + offset, index); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Line', comment, start, index, loc); + } + } -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} + function skipMultiLineComment() { + var start, loc, ch, comment; + if (extra.comments) { + start = index - 2; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + } -// -- Decoding + while (index < length) { + ch = source.charCodeAt(index); + if (isLineTerminator(ch)) { + if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else if (ch === 0x2A) { + // Block comment ends with '*/'. + if (source.charCodeAt(index + 1) === 0x2F) { + ++index; + ++index; + if (extra.comments) { + comment = source.slice(start + 2, index - 2); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + } + return; + } + ++index; + } else { + ++index; + } + } -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBytes = []; - this.initialBytesLen = 0; + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } - this.options = options || {}; - this.iconv = codec.iconv; -} + function skipComment() { + var ch, start; -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBytes.push(buf); - this.initialBytesLen += buf.length; - - if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) - return ''; + start = (index === 0); + while (index < length) { + ch = source.charCodeAt(index); - // We have enough bytes -> detect endianness. - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - this.initialBytes.length = this.initialBytesLen = 0; + if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { + ++index; + } + ++lineNumber; + lineStart = index; + start = true; + } else if (ch === 0x2F) { // U+002F is '/' + ch = source.charCodeAt(index + 1); + if (ch === 0x2F) { + ++index; + ++index; + skipSingleLineComment(2); + start = true; + } else if (ch === 0x2A) { // U+002A is '*' + ++index; + ++index; + skipMultiLineComment(); + } else { + break; + } + } else if (start && ch === 0x2D) { // U+002D is '-' + // U+003E is '>' + if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { + // '-->' is a single-line comment + index += 3; + skipSingleLineComment(3); + } else { + break; + } + } else if (ch === 0x3C) { // U+003C is '<' + if (source.slice(index + 1, index + 4) === '!--') { + ++index; // `<` + ++index; // `!` + ++index; // `-` + ++index; // `-` + skipSingleLineComment(4); + } else { + break; + } + } else { + break; + } + } } - return this.decoder.write(buf); -} - -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var res = this.decoder.write(buf), - trail = this.decoder.end(); + function scanHexEscape(prefix) { + var i, len, ch, code = 0; - return trail ? (res + trail) : res; + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = source[index++]; + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); } - return this.decoder.end(); -} -function detectEncoding(buf, defaultEncoding) { - var enc = defaultEncoding || 'utf-16le'; + function getEscapedIdentifier() { + var ch, id; - if (buf.length >= 2) { - // Check BOM. - if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM - enc = 'utf-16be'; - else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM - enc = 'utf-16le'; - else { - // No BOM found. Try to deduce encoding from initial content. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions - _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. + ch = source.charCodeAt(index++); + id = String.fromCharCode(ch); - for (var i = 0; i < _len; i += 2) { - if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; - if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } + id = ch; + } - if (asciiCharsBE > asciiCharsLE) - enc = 'utf-16be'; - else if (asciiCharsBE < asciiCharsLE) - enc = 'utf-16le'; + while (index < length) { + ch = source.charCodeAt(index); + if (!isIdentifierPart(ch)) { + break; + } + ++index; + id += String.fromCharCode(ch); + + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + id = id.substr(0, id.length - 1); + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id += ch; + } } + + return id; } - return enc; -} + function getIdentifier() { + var start, ch; + start = index++; + while (index < length) { + ch = source.charCodeAt(index); + if (ch === 0x5C) { + // Blackslash (U+005C) marks Unicode escape sequence. + index = start; + return getEscapedIdentifier(); + } + if (isIdentifierPart(ch)) { + ++index; + } else { + break; + } + } + return source.slice(start, index); + } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf16.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52,"safer-buffer":118}],93:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("safer-buffer").Buffer; + function scanIdentifier() { + var start, id, type; -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 + start = index; -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; + // Backslash (U+005C) starts an escaped character. + id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + type = Token.Identifier; + } else if (isKeyword(id)) { + type = Token.Keyword; + } else if (id === 'null') { + type = Token.NullLiteral; + } else if (id === 'true' || id === 'false') { + type = Token.BooleanLiteral; + } else { + type = Token.Identifier; + } + return { + type: type, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } -// -- Encoding -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + // 7.7 Punctuators -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} + function scanPunctuator() { + var start = index, + code = source.charCodeAt(index), + code2, + ch1 = source[index], + ch2, + ch3, + ch4; -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return Buffer.from(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); -} + switch (code) { -Utf7Encoder.prototype.end = function() { -} + // Check for most common single-character punctuators. + case 0x2E: // . dot + case 0x28: // ( open bracket + case 0x29: // ) close bracket + case 0x3B: // ; semicolon + case 0x2C: // , comma + case 0x7B: // { open curly brace + case 0x7D: // } close curly brace + case 0x5B: // [ + case 0x5D: // ] + case 0x3A: // : + case 0x3F: // ? + case 0x7E: // ~ + ++index; + if (extra.tokenize) { + if (code === 0x28) { + extra.openParenToken = extra.tokens.length; + } else if (code === 0x7B) { + extra.openCurlyToken = extra.tokens.length; + } + } + return { + type: Token.Punctuator, + value: String.fromCharCode(code), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + default: + code2 = source.charCodeAt(index + 1); -// -- Decoding + // '=' (U+003D) marks an assignment or comparison operator. + if (code2 === 0x3D) { + switch (code) { + case 0x2B: // + + case 0x2D: // - + case 0x2F: // / + case 0x3C: // < + case 0x3E: // > + case 0x5E: // ^ + case 0x7C: // | + case 0x25: // % + case 0x26: // & + case 0x2A: // * + index += 2; + return { + type: Token.Punctuator, + value: String.fromCharCode(code) + String.fromCharCode(code2), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} + case 0x21: // ! + case 0x3D: // = + index += 2; -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + // !== and === + if (source.charCodeAt(index) === 0x3D) { + ++index; + } + return { + type: Token.Punctuator, + value: source.slice(start, index), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + } + } -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); + // 4-character punctuator: >>>= -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; + ch4 = source.substr(index, 4); - // The decoder is more involved as we must handle chunks in stream. + if (ch4 === '>>>=') { + index += 4; + return { + type: Token.Punctuator, + value: ch4, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + buf.slice(lastI, i).toString(); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } + // 3-character punctuators: === !== >>> <<= >>= - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; + ch3 = ch4.substr(0, 3); - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } + if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') { + index += 3; + return { + type: Token.Punctuator, + value: ch3, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } - } - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString(); + // Other 2-character punctuators: ++ -- << >> && || + ch2 = ch3.substr(0, 2); - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); + if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') { + index += 2; + return { + type: Token.Punctuator, + value: ch2, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } + // 1-character punctuators: < > = ! + - * % & | ^ / + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } - this.inBase64 = inBase64; - this.base64Accum = base64Accum; + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } - return res; -} + // 7.8.3 Numeric Literals -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + function scanHexLiteral(start) { + var number = ''; - this.inBase64 = false; - this.base64Accum = ''; - return res; -} + while (index < length) { + if (!isHexDigit(source[index])) { + break; + } + number += source[index++]; + } + if (number.length === 0) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + return { + type: Token.NumericLiteral, + value: parseInt('0x' + number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; + function scanOctalLiteral(start) { + var number = '0' + source[index++]; + while (index < length) { + if (!isOctalDigit(source[index])) { + break; + } + number += source[index++]; + } -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; + if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: true, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } -// -- Encoding + function scanNumericLiteral() { + var number, start, ch; -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = Buffer.alloc(6); - this.base64AccumIdx = 0; -} + ch = source[index]; + assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; + start = index; + number = ''; + if (ch !== '.') { + number = source[index++]; + ch = source[index]; - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; + // Hex number starts with '0x'. + // Octal number starts with '0'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + ++index; + return scanHexLiteral(start); + } + if (isOctalDigit(ch)) { + return scanOctalLiteral(start); } - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; + // decimal number starts with '0' such as '09' is illegal. + if (ch && isDecimalDigit(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } } - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; } + ch = source[index]; + } - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; + if (ch === '.') { + number += source[index++]; + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; + ch = source[index]; + } - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; + if (ch === 'e' || ch === 'E') { + number += source[index++]; + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += source[index++]; + } + if (isDecimalDigit(source.charCodeAt(index))) { + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; } + } else { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } } - } - - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; - - return buf.slice(0, bufIdx); -} -Utf7IMAPEncoder.prototype.end = function() { - var buf = Buffer.alloc(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); } - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; } - return buf.slice(0, bufIdx); -} + // 7.8.4 String Literals + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart; + startLineNumber = lineNumber; + startLineStart = lineStart; -// -- Decoding + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} + start = index; + ++index; -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; + while (index < length) { + ch = source[index++]; -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = source[index++]; + if (!ch || !isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\x0B'; + break; - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } } else { - var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + lineStart = index; } + } else if (isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; + } + } - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } + return { + type: Token.StringLiteral, + value: str, + octal: octal, + startLineNumber: startLineNumber, + startLineStart: startLineStart, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + function testRegExp(pattern, flags) { + var value; + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); } + return value; } - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); + function scanRegExpBody() { + var ch, str, classMarker, terminated, body; - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = source[index++]; - res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); - } + classMarker = false; + terminated = false; + while (index < length) { + ch = source[index++]; + str += ch; + if (ch === '\\') { + ch = source[index++]; + // ECMA-262 7.8.5 + if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } else if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } + } + } - this.inBase64 = inBase64; - this.base64Accum = base64Accum; + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); + } - return res; -} + // Exclude leading and trailing slash. + body = str.substr(1, str.length - 2); + return { + value: body, + literal: str + }; + } -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + function scanRegExpFlags() { + var ch, str, flags, restore; - this.inBase64 = false; - this.base64Accum = ''; - return res; -} + str = ''; + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch.charCodeAt(0))) { + break; + } + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + for (str += '\\u'; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } else { + str += '\\'; + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + flags += ch; + str += ch; + } + } + return { + value: flags, + literal: str + }; + } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/encodings/utf7.js","/node_modules/iconv-lite/encodings") -},{"FWaASH":50,"buffer":52,"safer-buffer":118}],94:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + function scanRegExp() { + var start, body, flags, pattern, value; -var BOMChar = '\uFEFF'; + lookahead = null; + skipComment(); + start = index; -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; -} + body = scanRegExpBody(); + flags = scanRegExpFlags(); + value = testRegExp(body.value, flags.value); -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; + if (extra.tokenize) { + return { + type: Token.RegularExpression, + value: value, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + return { + literal: body.literal + flags.literal, + value: value, + start: start, + end: index + }; } - return this.encoder.write(str); -} + function collectRegex() { + var pos, loc, regex, token; -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); -} + skipComment(); + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; -//------------------------------------------------------------------------------ + regex = scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; -} + /* istanbul ignore next */ + if (!extra.tokenize) { + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } + } + } -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); + } - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); + return regex; + } + + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } + + function advanceSlash() { + var prevToken, + checkToken; + // Using the following algorithm: + // https://github.com/mozilla/sweet.js/wiki/design + prevToken = extra.tokens[extra.tokens.length - 1]; + if (!prevToken) { + // Nothing before that: it cannot be a division. + return collectRegex(); + } + if (prevToken.type === 'Punctuator') { + if (prevToken.value === ']') { + return scanPunctuator(); + } + if (prevToken.value === ')') { + checkToken = extra.tokens[extra.openParenToken - 1]; + if (checkToken && + checkToken.type === 'Keyword' && + (checkToken.value === 'if' || + checkToken.value === 'while' || + checkToken.value === 'for' || + checkToken.value === 'with')) { + return collectRegex(); + } + return scanPunctuator(); + } + if (prevToken.value === '}') { + // Dividing a function by anything makes little sense, + // but we have to check for that. + if (extra.tokens[extra.openCurlyToken - 3] && + extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { + // Anonymous function. + checkToken = extra.tokens[extra.openCurlyToken - 4]; + if (!checkToken) { + return scanPunctuator(); + } + } else if (extra.tokens[extra.openCurlyToken - 4] && + extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { + // Named function. + checkToken = extra.tokens[extra.openCurlyToken - 5]; + if (!checkToken) { + return collectRegex(); + } + } else { + return scanPunctuator(); + } + // checkToken determines whether the function is + // a declaration or an expression. + if (FnExprTokens.indexOf(checkToken.value) >= 0) { + // It is an expression. + return scanPunctuator(); + } + // It is a declaration. + return collectRegex(); + } + return collectRegex(); + } + if (prevToken.type === 'Keyword') { + return collectRegex(); + } + return scanPunctuator(); } - this.pass = true; - return res; -} + function advance() { + var ch; -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); -} + skipComment(); + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + start: index, + end: index + }; + } -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/bom-handling.js","/node_modules/iconv-lite/lib") -},{"FWaASH":50,"buffer":52}],95:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; -var Buffer = require("buffer").Buffer; -// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer + ch = source.charCodeAt(index); -// == Extend Node primitives to use iconv-lite ================================= + if (isIdentifierStart(ch)) { + return scanIdentifier(); + } -module.exports = function (iconv) { - var original = undefined; // Place to keep original methods. + // Very common: ( and ) and ; + if (ch === 0x28 || ch === 0x29 || ch === 0x3B) { + return scanPunctuator(); + } - // Node authors rewrote Buffer internals to make it compatible with - // Uint8Array and we cannot patch key functions since then. - // Note: this does use older Buffer API on a purpose - iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array); + // String literal starts with single quote (U+0027) or double quote (U+0022). + if (ch === 0x27 || ch === 0x22) { + return scanStringLiteral(); + } - iconv.extendNodeEncodings = function extendNodeEncodings() { - if (original) return; - original = {}; - if (!iconv.supportsNodeEncodingsExtension) { - console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); - console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); - return; + // Dot (.) U+002E can also start a floating-point number, hence the need + // to check the next character. + if (ch === 0x2E) { + if (isDecimalDigit(source.charCodeAt(index + 1))) { + return scanNumericLiteral(); + } + return scanPunctuator(); } - var nodeNativeEncodings = { - 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, - 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, - }; + if (isDecimalDigit(ch)) { + return scanNumericLiteral(); + } - Buffer.isNativeEncoding = function(enc) { - return enc && nodeNativeEncodings[enc.toLowerCase()]; + // Slash (/) U+002F can also start a regex. + if (extra.tokenize && ch === 0x2F) { + return advanceSlash(); } - // -- SlowBuffer ----------------------------------------------------------- - var SlowBuffer = require('buffer').SlowBuffer; + return scanPunctuator(); + } - original.SlowBufferToString = SlowBuffer.prototype.toString; - SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); + function collectToken() { + var loc, token, range, value; - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferToString.call(this, encoding, start, end); + skipComment(); + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); + token = advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (token.type !== Token.EOF) { + value = source.slice(token.start, token.end); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: [token.start, token.end], + loc: loc + }); } - original.SlowBufferWrite = SlowBuffer.prototype.write; - SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } + return token; + } - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); + function lex() { + var token; - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferWrite.call(this, string, offset, length, encoding); + token = lookahead; + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - } + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; - // -- Buffer --------------------------------------------------------------- + return token; + } - original.BufferIsEncoding = Buffer.isEncoding; - Buffer.isEncoding = function(encoding) { - return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); - } + function peek() { + var pos, line, start; - original.BufferByteLength = Buffer.byteLength; - Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { - encoding = String(encoding || 'utf8').toLowerCase(); + pos = index; + line = lineNumber; + start = lineStart; + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); + index = pos; + lineNumber = line; + lineStart = start; + } - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferByteLength.call(this, str, encoding); + function Position(line, column) { + this.line = line; + this.column = column; + } - // Slow, I know, but we don't have a better way yet. - return iconv.encode(str, encoding).length; - } + function SourceLocation(startLine, startColumn, line, column) { + this.start = new Position(startLine, startColumn); + this.end = new Position(line, column); + } - original.BufferToString = Buffer.prototype.toString; - Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); + SyntaxTreeDelegate = { - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferToString.call(this, encoding, start, end); + name: 'SyntaxTree', - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } + processComment: function (node) { + var lastChild, trailingComments; - original.BufferWrite = Buffer.prototype.write; - Buffer.prototype.write = function(string, offset, length, encoding) { - var _offset = offset, _length = length, _encoding = encoding; - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; + if (node.type === Syntax.Program) { + if (node.body.length > 0) { + return; } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; } - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferWrite.call(this, string, _offset, _length, _encoding); - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; + if (extra.trailingComments.length > 0) { + if (extra.trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.trailingComments; + extra.trailingComments = []; + } else { + extra.trailingComments.length = 0; + } } else { - length = +length; - if (length > remaining) { - length = remaining; + if (extra.bottomRightStack.length > 0 && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; + delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; } } - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); + // Eating the stack. + while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) { + lastChild = extra.bottomRightStack.pop(); + } - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; + if (lastChild) { + if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = lastChild.leadingComments; + delete lastChild.leadingComments; + } + } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = extra.leadingComments; + extra.leadingComments = []; + } - // TODO: Set _charsWritten. - } + if (trailingComments) { + node.trailingComments = trailingComments; + } - // -- Readable ------------------------------------------------------------- - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; + extra.bottomRightStack.push(node); + }, - original.ReadableSetEncoding = Readable.prototype.setEncoding; - Readable.prototype.setEncoding = function setEncoding(enc, options) { - // Use our own decoder, it has the same interface. - // We cannot use original function as it doesn't handle BOM-s. - this._readableState.decoder = iconv.getDecoder(enc, options); - this._readableState.encoding = enc; + markEnd: function (node, startToken) { + if (extra.range) { + node.range = [startToken.start, index]; + } + if (extra.loc) { + node.loc = new SourceLocation( + startToken.startLineNumber === undefined ? startToken.lineNumber : startToken.startLineNumber, + startToken.start - (startToken.startLineStart === undefined ? startToken.lineStart : startToken.startLineStart), + lineNumber, + index - lineStart + ); + this.postProcess(node); } - Readable.prototype.collect = iconv._collect; - } - } + if (extra.attachComment) { + this.processComment(node); + } + return node; + }, - // Remove iconv-lite Node primitive extensions. - iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { - if (!iconv.supportsNodeEncodingsExtension) - return; - if (!original) - throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") + postProcess: function (node) { + if (extra.source) { + node.loc.source = extra.source; + } + return node; + }, - delete Buffer.isNativeEncoding; + createArrayExpression: function (elements) { + return { + type: Syntax.ArrayExpression, + elements: elements + }; + }, - var SlowBuffer = require('buffer').SlowBuffer; + createAssignmentExpression: function (operator, left, right) { + return { + type: Syntax.AssignmentExpression, + operator: operator, + left: left, + right: right + }; + }, - SlowBuffer.prototype.toString = original.SlowBufferToString; - SlowBuffer.prototype.write = original.SlowBufferWrite; + createBinaryExpression: function (operator, left, right) { + var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : + Syntax.BinaryExpression; + return { + type: type, + operator: operator, + left: left, + right: right + }; + }, - Buffer.isEncoding = original.BufferIsEncoding; - Buffer.byteLength = original.BufferByteLength; - Buffer.prototype.toString = original.BufferToString; - Buffer.prototype.write = original.BufferWrite; + createBlockStatement: function (body) { + return { + type: Syntax.BlockStatement, + body: body + }; + }, - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; + createBreakStatement: function (label) { + return { + type: Syntax.BreakStatement, + label: label + }; + }, - Readable.prototype.setEncoding = original.ReadableSetEncoding; - delete Readable.prototype.collect; - } + createCallExpression: function (callee, args) { + return { + type: Syntax.CallExpression, + callee: callee, + 'arguments': args + }; + }, - original = undefined; - } -} + createCatchClause: function (param, body) { + return { + type: Syntax.CatchClause, + param: param, + body: body + }; + }, -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/extend-node.js","/node_modules/iconv-lite/lib") -},{"FWaASH":50,"buffer":52,"stream":121}],96:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + createConditionalExpression: function (test, consequent, alternate) { + return { + type: Syntax.ConditionalExpression, + test: test, + consequent: consequent, + alternate: alternate + }; + }, -// Some environments don't have global Buffer (e.g. React Native). -// Solution would be installing npm modules "buffer" and "stream" explicitly. -var Buffer = require("safer-buffer").Buffer; + createContinueStatement: function (label) { + return { + type: Syntax.ContinueStatement, + label: label + }; + }, -var bomHandling = require("./bom-handling"), - iconv = module.exports; + createDebuggerStatement: function () { + return { + type: Syntax.DebuggerStatement + }; + }, -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; + createDoWhileStatement: function (body, test) { + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + }, -// Characters emitted in case of error. -iconv.defaultCharUnicode = '�'; -iconv.defaultCharSingleByte = '?'; + createEmptyStatement: function () { + return { + type: Syntax.EmptyStatement + }; + }, -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. + createExpressionStatement: function (expression) { + return { + type: Syntax.ExpressionStatement, + expression: expression + }; + }, - var encoder = iconv.getEncoder(encoding, options); + createForStatement: function (init, test, update, body) { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + }, - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} + createForInStatement: function (left, right, body) { + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + }, -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } + createFunctionDeclaration: function (id, params, defaults, body) { + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, + + createFunctionExpression: function (id, params, defaults, body) { + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, - buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. - } + createIdentifier: function (name) { + return { + type: Syntax.Identifier, + name: name + }; + }, - var decoder = iconv.getDecoder(encoding, options); + createIfStatement: function (test, consequent, alternate) { + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + }, - var res = decoder.write(buf); - var trail = decoder.end(); + createLabeledStatement: function (label, body) { + return { + type: Syntax.LabeledStatement, + label: label, + body: body + }; + }, - return trail ? (res + trail) : res; -} + createLiteral: function (token) { + return { + type: Syntax.Literal, + value: token.value, + raw: source.slice(token.start, token.end) + }; + }, -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} + createMemberExpression: function (accessor, object, property) { + return { + type: Syntax.MemberExpression, + computed: accessor === '[', + object: object, + property: property + }; + }, -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; + createNewExpression: function (callee, args) { + return { + type: Syntax.NewExpression, + callee: callee, + 'arguments': args + }; + }, -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = iconv._canonicalizeEncoding(encoding); + createObjectExpression: function (properties) { + return { + type: Syntax.ObjectExpression, + properties: properties + }; + }, - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; + createPostfixExpression: function (operator, argument) { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: false + }; + }, - var codecDef = iconv.encodings[enc]; + createProgram: function (body) { + return { + type: Syntax.Program, + body: body + }; + }, - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; + createProperty: function (kind, key, value) { + return { + type: Syntax.Property, + key: key, + value: value, + kind: kind + }; + }, - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; + createReturnStatement: function (argument) { + return { + type: Syntax.ReturnStatement, + argument: argument + }; + }, - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; + createSequenceExpression: function (expressions) { + return { + type: Syntax.SequenceExpression, + expressions: expressions + }; + }, - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; + createSwitchCase: function (test, consequent) { + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + }, - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); + createSwitchStatement: function (discriminant, cases) { + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + }, - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; + createThisExpression: function () { + return { + type: Syntax.ThisExpression + }; + }, - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} + createThrowStatement: function (argument) { + return { + type: Syntax.ThrowStatement, + argument: argument + }; + }, -iconv._canonicalizeEncoding = function(encoding) { - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); -} + createTryStatement: function (block, guardedHandlers, handlers, finalizer) { + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: guardedHandlers, + handlers: handlers, + finalizer: finalizer + }; + }, -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); + createUnaryExpression: function (operator, argument) { + if (operator === '++' || operator === '--') { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: true + }; + } + return { + type: Syntax.UnaryExpression, + operator: operator, + argument: argument, + prefix: true + }; + }, - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); + createVariableDeclaration: function (declarations, kind) { + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + }, - return encoder; -} + createVariableDeclarator: function (id, init) { + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + }, -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); + createWhileStatement: function (test, body) { + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + }, - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); + createWithStatement: function (object, body) { + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + } + }; - return decoder; -} + // Return true if there is a line terminator before the next token. + function peekLineTerminator() { + var pos, line, start, found; -// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. -var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; -if (nodeVer) { + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; - // Load streaming support in Node v0.10+ - var nodeVerArr = nodeVer.split(".").map(Number); - if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { - require("./streams")(iconv); + return found; } - // Load Node primitive extensions. - require("./extend-node")(iconv); -} - -if ("Ā" != "\u0100") { - console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); -} - -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/index.js","/node_modules/iconv-lite/lib") -},{"../encodings":79,"./bom-handling":94,"./extend-node":95,"./streams":97,"FWaASH":50,"buffer":52,"safer-buffer":118}],97:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -"use strict"; + // Throw an exception -var Buffer = require("buffer").Buffer, - Transform = require("stream").Transform; + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.start; + error.lineNumber = token.lineNumber; + error.column = token.start - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; + } -// == Exports ================================================================== -module.exports = function(iconv) { - - // Additional Public API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + error.description = msg; + throw error; } - iconv.decodeStream = function decodeStream(encoding, options) { - return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; + } + } } - iconv.supportsStreams = true; + // Throw an exception because of the token. - // Not published yet. - iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; - iconv._collect = IconvLiteDecoderStream.prototype.collect; -}; + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); + } -// == Encoder stream ======================================================= -function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); -} + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); + } -IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } -}); + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); + } -IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; + } + throwError(token, Messages.UnexpectedToken, token.value); + } -IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); } -} - -IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; -} + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. -// == Decoder stream ======================================================= -function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); -} + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); + } + } -IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } -}); + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. -IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } } -} -IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } -} + // Return true if the next token matches the specified punctuator. -IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; -} + function match(value) { + return lookahead.type === Token.Punctuator && lookahead.value === value; + } + // Return true if the next token matches the specified keyword -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/iconv-lite/lib/streams.js","/node_modules/iconv-lite/lib") -},{"FWaASH":50,"buffer":52,"stream":121}],98:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] + function matchKeyword(keyword) { + return lookahead.type === Token.Keyword && lookahead.value === keyword; + } - i += d + // Return true if the next token is an assignment operator - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + function matchAssign() { + var op; - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + if (lookahead.type !== Token.Punctuator) { + return false; + } + op = lookahead.value; + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} + function consumeSemicolon() { + var line; -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B || match(';')) { + lex(); + return; + } - value = Math.abs(value) + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; + } - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 + if (lookahead.type !== Token.EOF && !match('}')) { + throwUnexpected(lookahead); + } } - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 + // Return true if provided expression is LeftHandSideExpression + + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; } - } - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + // 11.1.4 Array Initialiser - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + function parseArrayInitialiser() { + var elements = [], startToken; - buffer[offset + i - d] |= s * 128 -} + startToken = lookahead; + expect('['); -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/ieee754/index.js","/node_modules/ieee754") -},{"FWaASH":50,"buffer":52}],99:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true + while (!match(']')) { + if (match(',')) { + lex(); + elements.push(null); + } else { + elements.push(parseAssignmentExpression()); + + if (!match(']')) { + expect(','); + } + } } - }) - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor + + lex(); + + return delegate.markEnd(delegate.createArrayExpression(elements), startToken); } - } -} -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/inherits/inherits_browser.js","/node_modules/inherits") -},{"FWaASH":50,"buffer":52}],100:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; + // 11.1.5 Object Initialiser -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/isarray/index.js","/node_modules/isarray") -},{"FWaASH":50,"buffer":52}],101:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -'use strict'; + function parsePropertyFunction(param, first) { + var previousStrict, body, startToken; -var traverse = module.exports = function (schema, opts, cb) { - // Legacy support for v0.3.1 and earlier. - if (typeof opts == 'function') { - cb = opts; - opts = {}; - } + previousStrict = strict; + startToken = lookahead; + body = parseFunctionSourceElements(); + if (first && strict && isRestrictedWord(param[0].name)) { + throwErrorTolerant(first, Messages.StrictParamName); + } + strict = previousStrict; + return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken); + } - cb = opts.cb || cb; - var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; - var post = cb.post || function() {}; + function parseObjectPropertyKey() { + var token, startToken; - _traverse(opts, pre, post, schema, '', schema); -}; + startToken = lookahead; + token = lex(); + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. -traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true -}; + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return delegate.markEnd(delegate.createLiteral(token), startToken); + } -traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true -}; + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } -traverse.propsKeywords = { - definitions: true, - properties: true, - patternProperties: true, - dependencies: true -}; + function parseObjectProperty() { + var token, key, id, value, param, startToken; -traverse.skipKeywords = { - default: true, - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true -}; + token = lookahead; + startToken = lookahead; + if (token.type === Token.Identifier) { -function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == 'object' && !Array.isArray(schema)) { - pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i=0; i - Copyright (C) 2013 Thaddee Tyl - Copyright (C) 2013 Mathias Bynens - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat + expect('{'); - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + while (!match('}')) { + property = parseObjectProperty(); - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + key = '$' + name; + if (Object.prototype.hasOwnProperty.call(map, key)) { + if (map[key] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[key] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[key] |= kind; + } else { + map[key] = kind; + } -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -throwErrorTolerant: true, -throwError: true, generateStatement: true, peek: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseUnaryExpression: true, -parseStatement: true, parseSourceElement: true */ + properties.push(property); -(function (root, factory) { - 'use strict'; + if (!match('}')) { + expect(','); + } + } - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. + expect('}'); - /* istanbul ignore next */ - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); + return delegate.markEnd(delegate.createObjectExpression(properties), startToken); } -}(this, function (exports) { - 'use strict'; - var Token, - TokenName, - FnExprTokens, - Syntax, - PropertyKind, - Messages, - Regex, - SyntaxTreeDelegate, - source, - strict, - index, - lineNumber, - lineStart, - length, - delegate, - lookahead, - state, - extra; + // 11.1.6 The Grouping Operator - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8, - RegularExpression: 9 - }; + function parseGroupExpression() { + var expr; - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - TokenName[Token.RegularExpression] = 'RegularExpression'; + expect('('); - // A function following one of those tokens is an expression. - FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', - 'return', 'case', 'delete', 'throw', 'void', - // assignment operators - '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', - '&=', '|=', '^=', ',', - // binary/unary operators - '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', - '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', - '<=', '<', '>', '!=', '!==']; + expr = parseExpression(); - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; + expect(')'); - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; + return expr; + } - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), - NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') - }; + // 11.1 Primary Expressions + + function parsePrimaryExpression() { + var type, token, expr, startToken; + + if (match('(')) { + return parseGroupExpression(); + } + + if (match('[')) { + return parseArrayInitialiser(); + } + + if (match('{')) { + return parseObjectInitialiser(); + } + + type = lookahead.type; + startToken = lookahead; + + if (type === Token.Identifier) { + expr = delegate.createIdentifier(lex().value); + } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && lookahead.octal) { + throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); + } + expr = delegate.createLiteral(lex()); + } else if (type === Token.Keyword) { + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + if (matchKeyword('this')) { + lex(); + expr = delegate.createThisExpression(); + } else { + throwUnexpected(lex()); + } + } else if (type === Token.BooleanLiteral) { + token = lex(); + token.value = (token.value === 'true'); + expr = delegate.createLiteral(token); + } else if (type === Token.NullLiteral) { + token = lex(); + token.value = null; + expr = delegate.createLiteral(token); + } else if (match('/') || match('/=')) { + if (typeof extra.tokens !== 'undefined') { + expr = delegate.createLiteral(collectRegex()); + } else { + expr = delegate.createLiteral(scanRegExp()); + } + peek(); + } else { + throwUnexpected(lex()); + } + + return delegate.markEnd(expr, startToken); + } - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. + // 11.2 Left-Hand-Side Expressions - function assert(condition, message) { - /* istanbul ignore if */ - if (!condition) { - throw new Error('ASSERT: ' + message); + function parseArguments() { + var args = []; + + expect('('); + + if (!match(')')) { + while (index < length) { + args.push(parseAssignmentExpression()); + if (match(')')) { + break; + } + expect(','); + } } - } - function isDecimalDigit(ch) { - return (ch >= 48 && ch <= 57); // 0..9 - } + expect(')'); - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + return args; } - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } + function parseNonComputedProperty() { + var token, startToken; + startToken = lookahead; + token = lex(); - // 7.2 White Space + if (!isIdentifierName(token)) { + throwUnexpected(token); + } - function isWhiteSpace(ch) { - return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || - (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); } - // 7.3 Line Terminators + function parseNonComputedMember() { + expect('.'); - function isLineTerminator(ch) { - return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); + return parseNonComputedProperty(); } - // 7.6 Identifier Names and Identifiers + function parseComputedMember() { + var expr; - function isIdentifierStart(ch) { - return (ch == 0x40) || (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); - } + expect('['); - function isIdentifierPart(ch) { - return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) - (ch >= 0x41 && ch <= 0x5A) || // A..Z - (ch >= 0x61 && ch <= 0x7A) || // a..z - (ch >= 0x30 && ch <= 0x39) || // 0..9 - (ch === 0x5C) || // \ (backslash) - ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); - } + expr = parseExpression(); - // 7.6.1.2 Future Reserved Words + expect(']'); - function isFutureReservedWord(id) { - switch (id) { - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - default: - return false; - } + return expr; } - function isStrictModeReservedWord(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - default: - return false; - } - } + function parseNewExpression() { + var callee, args, startToken; - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; + startToken = lookahead; + expectKeyword('new'); + callee = parseLeftHandSideExpression(); + args = match('(') ? parseArguments() : []; + + return delegate.markEnd(delegate.createNewExpression(callee, args), startToken); } - // 7.6.1.1 Keywords + function parseLeftHandSideExpressionAllowCall() { + var previousAllowIn, expr, args, property, startToken; - function isKeyword(id) { - if (strict && isStrictModeReservedWord(id)) { - return true; - } + startToken = lookahead; - // 'const' is specialized as Keyword in V8. - // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. - // Some others are from future reserved words. + previousAllowIn = state.allowIn; + state.allowIn = true; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; + for (;;) { + if (match('.')) { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); + } else if (match('(')) { + args = parseArguments(); + expr = delegate.createCallExpression(expr, args); + } else if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); + } else { + break; + } + delegate.markEnd(expr, startToken); } + + return expr; } - // 7.4 Comments + function parseLeftHandSideExpression() { + var previousAllowIn, expr, property, startToken; - function addComment(type, value, start, end, loc) { - var comment, attacher; + startToken = lookahead; - assert(typeof start === 'number', 'Comment must have valid position'); + previousAllowIn = state.allowIn; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (state.lastCommentStart >= start) { - return; + while (match('.') || match('[')) { + if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); + } else { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); + } + delegate.markEnd(expr, startToken); } - state.lastCommentStart = start; - comment = { - type: type, - value: value - }; - if (extra.range) { - comment.range = [start, end]; - } - if (extra.loc) { - comment.loc = loc; - } - extra.comments.push(comment); - if (extra.attachComment) { - extra.leadingComments.push(comment); - extra.trailingComments.push(comment); - } + return expr; } - function skipSingleLineComment(offset) { - var start, loc, ch, comment; + // 11.3 Postfix Expressions - start = index - offset; - loc = { - start: { - line: lineNumber, - column: index - lineStart - offset - } - }; + function parsePostfixExpression() { + var expr, token, startToken = lookahead; - while (index < length) { - ch = source.charCodeAt(index); - ++index; - if (isLineTerminator(ch)) { - if (extra.comments) { - comment = source.slice(start + offset, index - 1); - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - addComment('Line', comment, start, index - 1, loc); + expr = parseLeftHandSideExpressionAllowCall(); + + if (lookahead.type === Token.Punctuator) { + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); } - if (ch === 13 && source.charCodeAt(index) === 10) { - ++index; + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); } - ++lineNumber; - lineStart = index; - return; + + token = lex(); + expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken); } } - if (extra.comments) { - comment = source.slice(start + offset, index); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Line', comment, start, index, loc); + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var token, expr, startToken; + + if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { + expr = parsePostfixExpression(); + } else if (match('++') || match('--')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); + } + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + } + + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (match('+') || match('-') || match('~') || match('!')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + } else { + expr = parsePostfixExpression(); } + + return expr; } - function skipMultiLineComment() { - var start, loc, ch, comment; + function binaryPrecedence(token, allowIn) { + var prec = 0; - if (extra.comments) { - start = index - 2; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; + if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { + return 0; } - while (index < length) { - ch = source.charCodeAt(index); - if (isLineTerminator(ch)) { - if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else if (ch === 0x2A) { - // Block comment ends with '*/'. - if (source.charCodeAt(index + 1) === 0x2F) { - ++index; - ++index; - if (extra.comments) { - comment = source.slice(start + 2, index - 2); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - } - return; - } - ++index; - } else { - ++index; - } + switch (token.value) { + case '||': + prec = 1; + break; + + case '&&': + prec = 2; + break; + + case '|': + prec = 3; + break; + + case '^': + prec = 4; + break; + + case '&': + prec = 5; + break; + + case '==': + case '!=': + case '===': + case '!==': + prec = 6; + break; + + case '<': + case '>': + case '<=': + case '>=': + case 'instanceof': + prec = 7; + break; + + case 'in': + prec = allowIn ? 7 : 0; + break; + + case '<<': + case '>>': + case '>>>': + prec = 8; + break; + + case '+': + case '-': + prec = 9; + break; + + case '*': + case '/': + case '%': + prec = 11; + break; + + default: + break; } - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + return prec; } - function skipComment() { - var ch, start; + // 11.5 Multiplicative Operators + // 11.6 Additive Operators + // 11.7 Bitwise Shift Operators + // 11.8 Relational Operators + // 11.9 Equality Operators + // 11.10 Binary Bitwise Operators + // 11.11 Binary Logical Operators - start = (index === 0); - while (index < length) { - ch = source.charCodeAt(index); + function parseBinaryExpression() { + var marker, markers, expr, token, prec, stack, right, operator, left, i; - if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { - ++index; - } - ++lineNumber; - lineStart = index; - start = true; - } else if (ch === 0x2F) { // U+002F is '/' - ch = source.charCodeAt(index + 1); - if (ch === 0x2F) { - ++index; - ++index; - skipSingleLineComment(2); - start = true; - } else if (ch === 0x2A) { // U+002A is '*' - ++index; - ++index; - skipMultiLineComment(); - } else { - break; - } - } else if (start && ch === 0x2D) { // U+002D is '-' - // U+003E is '>' - if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { - // '-->' is a single-line comment - index += 3; - skipSingleLineComment(3); - } else { - break; - } - } else if (ch === 0x3C) { // U+003C is '<' - if (source.slice(index + 1, index + 4) === '!--') { - ++index; // `<` - ++index; // `!` - ++index; // `-` - ++index; // `-` - skipSingleLineComment(4); - } else { - break; - } - } else { - break; + marker = lookahead; + left = parseUnaryExpression(); + + token = lookahead; + prec = binaryPrecedence(token, state.allowIn); + if (prec === 0) { + return left; + } + token.prec = prec; + lex(); + + markers = [marker, lookahead]; + right = parseUnaryExpression(); + + stack = [left, token, right]; + + while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { + + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { + right = stack.pop(); + operator = stack.pop().value; + left = stack.pop(); + expr = delegate.createBinaryExpression(operator, left, right); + markers.pop(); + marker = markers[markers.length - 1]; + delegate.markEnd(expr, marker); + stack.push(expr); } + + // Shift. + token = lex(); + token.prec = prec; + stack.push(token); + markers.push(lookahead); + expr = parseUnaryExpression(); + stack.push(expr); } + + // Final reduce to clean-up the stack. + i = stack.length - 1; + expr = stack[i]; + markers.pop(); + while (i > 1) { + expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); + i -= 2; + marker = markers.pop(); + delegate.markEnd(expr, marker); + } + + return expr; } - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } + // 11.12 Conditional Operator + + function parseConditionalExpression() { + var expr, previousAllowIn, consequent, alternate, startToken; + + startToken = lookahead; + + expr = parseBinaryExpression(); + + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + alternate = parseAssignmentExpression(); + + expr = delegate.createConditionalExpression(expr, consequent, alternate); + delegate.markEnd(expr, startToken); } - return String.fromCharCode(code); + + return expr; } - function getEscapedIdentifier() { - var ch, id; + // 11.13 Assignment Operators - ch = source.charCodeAt(index++); - id = String.fromCharCode(ch); + function parseAssignmentExpression() { + var token, left, right, node, startToken; - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + token = lookahead; + startToken = lookahead; + + node = left = parseConditionalExpression(); + + if (matchAssign()) { + // LeftHandSideExpression + if (!isLeftHandSide(left)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + + // 11.13.1 + if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); } - id = ch; + + token = lex(); + right = parseAssignmentExpression(); + node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken); } - while (index < length) { - ch = source.charCodeAt(index); - if (!isIdentifierPart(ch)) { - break; - } - ++index; - id += String.fromCharCode(ch); + return node; + } - // '\u' (U+005C, U+0075) denotes an escaped character. - if (ch === 0x5C) { - id = id.substr(0, id.length - 1); - if (source.charCodeAt(index) !== 0x75) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - ++index; - ch = scanHexEscape('u'); - if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + // 11.14 Comma Operator + + function parseExpression() { + var expr, startToken = lookahead; + + expr = parseAssignmentExpression(); + + if (match(',')) { + expr = delegate.createSequenceExpression([ expr ]); + + while (index < length) { + if (!match(',')) { + break; } - id += ch; + lex(); + expr.expressions.push(parseAssignmentExpression()); } + + delegate.markEnd(expr, startToken); } - return id; + return expr; } - function getIdentifier() { - var start, ch; + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; - start = index++; while (index < length) { - ch = source.charCodeAt(index); - if (ch === 0x5C) { - // Blackslash (U+005C) marks Unicode escape sequence. - index = start; - return getEscapedIdentifier(); + if (match('}')) { + break; } - if (isIdentifierPart(ch)) { - ++index; - } else { + statement = parseSourceElement(); + if (typeof statement === 'undefined') { break; } + list.push(statement); } - return source.slice(start, index); + return list; } - function scanIdentifier() { - var start, id, type; + function parseBlock() { + var block, startToken; - start = index; + startToken = lookahead; + expect('{'); - // Backslash (U+005C) starts an escaped character. - id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); + block = parseStatementList(); - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - type = Token.Identifier; - } else if (isKeyword(id)) { - type = Token.Keyword; - } else if (id === 'null') { - type = Token.NullLiteral; - } else if (id === 'true' || id === 'false') { - type = Token.BooleanLiteral; - } else { - type = Token.Identifier; + expect('}'); + + return delegate.markEnd(delegate.createBlockStatement(block), startToken); + } + + // 12.2 Variable Statement + + function parseVariableIdentifier() { + var token, startToken; + + startToken = lookahead; + token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); } - return { - type: type, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); } + function parseVariableDeclaration(kind) { + var init = null, id, startToken; - // 7.7 Punctuators + startToken = lookahead; + id = parseVariableIdentifier(); - function scanPunctuator() { - var start = index, - code = source.charCodeAt(index), - code2, - ch1 = source[index], - ch2, - ch3, - ch4; + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } - switch (code) { + if (kind === 'const') { + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } - // Check for most common single-character punctuators. - case 0x2E: // . dot - case 0x28: // ( open bracket - case 0x29: // ) close bracket - case 0x3B: // ; semicolon - case 0x2C: // , comma - case 0x7B: // { open curly brace - case 0x7D: // } close curly brace - case 0x5B: // [ - case 0x5D: // ] - case 0x3A: // : - case 0x3F: // ? - case 0x7E: // ~ - ++index; - if (extra.tokenize) { - if (code === 0x28) { - extra.openParenToken = extra.tokens.length; - } else if (code === 0x7B) { - extra.openCurlyToken = extra.tokens.length; - } + return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken); + } + + function parseVariableDeclarationList(kind) { + var list = []; + + do { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; } - return { - type: Token.Punctuator, - value: String.fromCharCode(code), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + lex(); + } while (index < length); - default: - code2 = source.charCodeAt(index + 1); + return list; + } - // '=' (U+003D) marks an assignment or comparison operator. - if (code2 === 0x3D) { - switch (code) { - case 0x2B: // + - case 0x2D: // - - case 0x2F: // / - case 0x3C: // < - case 0x3E: // > - case 0x5E: // ^ - case 0x7C: // | - case 0x25: // % - case 0x26: // & - case 0x2A: // * - index += 2; - return { - type: Token.Punctuator, - value: String.fromCharCode(code) + String.fromCharCode(code2), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + function parseVariableStatement() { + var declarations; - case 0x21: // ! - case 0x3D: // = - index += 2; + expectKeyword('var'); - // !== and === - if (source.charCodeAt(index) === 0x3D) { - ++index; - } - return { - type: Token.Punctuator, - value: source.slice(start, index), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } - } - } + declarations = parseVariableDeclarationList(); - // 4-character punctuator: >>>= + consumeSemicolon(); - ch4 = source.substr(index, 4); + return delegate.createVariableDeclaration(declarations, 'var'); + } - if (ch4 === '>>>=') { - index += 4; - return { - type: Token.Punctuator, - value: ch4, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations, startToken; - // 3-character punctuators: === !== >>> <<= >>= + startToken = lookahead; - ch3 = ch4.substr(0, 3); + expectKeyword(kind); - if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') { - index += 3; - return { - type: Token.Punctuator, - value: ch3, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + declarations = parseVariableDeclarationList(kind); - // Other 2-character punctuators: ++ -- << >> && || - ch2 = ch3.substr(0, 2); + consumeSemicolon(); - if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') { - index += 2; - return { - type: Token.Punctuator, - value: ch2, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken); + } - // 1-character punctuators: < > = ! + - * % & | ^ / - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + // 12.3 Empty Statement - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + function parseEmptyStatement() { + expect(';'); + return delegate.createEmptyStatement(); } - // 7.8.3 Numeric Literals + // 12.4 Expression Statement - function scanHexLiteral(start) { - var number = ''; + function parseExpressionStatement() { + var expr = parseExpression(); + consumeSemicolon(); + return delegate.createExpressionStatement(expr); + } - while (index < length) { - if (!isHexDigit(source[index])) { - break; - } - number += source[index++]; - } + // 12.5 If statement - if (number.length === 0) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + function parseIfStatement() { + var test, consequent, alternate; - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + expectKeyword('if'); - return { - type: Token.NumericLiteral, - value: parseInt('0x' + number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + expect('('); - function scanOctalLiteral(start) { - var number = '0' + source[index++]; - while (index < length) { - if (!isOctalDigit(source[index])) { - break; - } - number += source[index++]; - } + test = parseExpression(); - if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); + } else { + alternate = null; } - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + return delegate.createIfStatement(test, consequent, alternate); } - function scanNumericLiteral() { - var number, start, ch; + // 12.6 Iteration Statements - ch = source[index]; - assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); + function parseDoWhileStatement() { + var body, test, oldInIteration; - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; + expectKeyword('do'); - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - ++index; - return scanHexLiteral(start); - } - if (isOctalDigit(ch)) { - return scanOctalLiteral(start); - } + oldInIteration = state.inIteration; + state.inIteration = true; - // decimal number starts with '0' such as '09' is illegal. - if (ch && isDecimalDigit(ch.charCodeAt(0))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } + body = parseStatement(); - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } + state.inIteration = oldInIteration; - if (ch === '.') { - number += source[index++]; - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - ch = source[index]; - } + expectKeyword('while'); - if (ch === 'e' || ch === 'E') { - number += source[index++]; + expect('('); - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - if (isDecimalDigit(source.charCodeAt(index))) { - while (isDecimalDigit(source.charCodeAt(index))) { - number += source[index++]; - } - } else { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } + test = parseExpression(); - if (isIdentifierStart(source.charCodeAt(index))) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + expect(')'); + + if (match(';')) { + lex(); } - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + return delegate.createDoWhileStatement(body, test); } - // 7.8.4 String Literals + function parseWhileStatement() { + var test, body, oldInIteration; - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart; - startLineNumber = lineNumber; - startLineStart = lineStart; + expectKeyword('while'); - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); + expect('('); - start = index; - ++index; + test = parseExpression(); - while (index < length) { - ch = source[index++]; + expect(')'); - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!ch || !isLineTerminator(ch.charCodeAt(0))) { - switch (ch) { - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\x0B'; - break; + oldInIteration = state.inIteration; + state.inIteration = true; - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); + body = parseStatement(); - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } + state.inIteration = oldInIteration; - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); + return delegate.createWhileStatement(test, body); + } - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - lineStart = index; - } - } else if (isLineTerminator(ch.charCodeAt(0))) { - break; - } else { - str += ch; - } - } + function parseForVariableDeclaration() { + var token, declarations, startToken; - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } + startToken = lookahead; + token = lex(); + declarations = parseVariableDeclarationList(); - return { - type: Token.StringLiteral, - value: str, - octal: octal, - startLineNumber: startLineNumber, - startLineStart: startLineStart, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; + return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken); } - function testRegExp(pattern, flags) { - var value; - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - return value; - } + function parseForStatement() { + var init, test, update, left, right, body, oldInIteration; - function scanRegExpBody() { - var ch, str, classMarker, terminated, body; + init = test = update = null; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; + expectKeyword('for'); - classMarker = false; - terminated = false; - while (index < length) { - ch = source[index++]; - str += ch; - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (isLineTerminator(ch.charCodeAt(0))) { - throwError({}, Messages.UnterminatedRegExp); - } else if (classMarker) { - if (ch === ']') { - classMarker = false; + expect('('); + + if (match(';')) { + lex(); + } else { + if (matchKeyword('var') || matchKeyword('let')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1 && matchKeyword('in')) { + lex(); + left = init; + right = parseExpression(); + init = null; } } else { - if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isLeftHandSide(init)) { + throwErrorTolerant({}, Messages.InvalidLHSInForIn); + } + + lex(); + left = init; + right = parseExpression(); + init = null; } } - } - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); + if (typeof left === 'undefined') { + expect(';'); + } } - // Exclude leading and trailing slash. - body = str.substr(1, str.length - 2); - return { - value: body, - literal: str - }; - } - - function scanRegExpFlags() { - var ch, str, flags, restore; + if (typeof left === 'undefined') { - str = ''; - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch.charCodeAt(0))) { - break; + if (!match(';')) { + test = parseExpression(); } + expect(';'); - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - for (str += '\\u'; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); - } else { - str += '\\'; - throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - flags += ch; - str += ch; + if (!match(')')) { + update = parseExpression(); } } - return { - value: flags, - literal: str - }; - } - - function scanRegExp() { - var start, body, flags, pattern, value; + expect(')'); - lookahead = null; - skipComment(); - start = index; + oldInIteration = state.inIteration; + state.inIteration = true; - body = scanRegExpBody(); - flags = scanRegExpFlags(); - value = testRegExp(body.value, flags.value); + body = parseStatement(); - if (extra.tokenize) { - return { - type: Token.RegularExpression, - value: value, - lineNumber: lineNumber, - lineStart: lineStart, - start: start, - end: index - }; - } + state.inIteration = oldInIteration; - return { - literal: body.literal + flags.literal, - value: value, - start: start, - end: index - }; + return (typeof left === 'undefined') ? + delegate.createForStatement(init, test, update, body) : + delegate.createForInStatement(left, right, body); } - function collectRegex() { - var pos, loc, regex, token; + // 12.7 The continue statement - skipComment(); + function parseContinueStatement() { + var label = null, key; - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; + expectKeyword('continue'); - regex = scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; + // Optimize the most common form: 'continue;'. + if (source.charCodeAt(index) === 0x3B) { + lex(); - /* istanbul ignore next */ - if (!extra.tokenize) { - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); } - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); + return delegate.createContinueStatement(null); } - return regex; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } - function advanceSlash() { - var prevToken, - checkToken; - // Using the following algorithm: - // https://github.com/mozilla/sweet.js/wiki/design - prevToken = extra.tokens[extra.tokens.length - 1]; - if (!prevToken) { - // Nothing before that: it cannot be a division. - return collectRegex(); + return delegate.createContinueStatement(null); } - if (prevToken.type === 'Punctuator') { - if (prevToken.value === ']') { - return scanPunctuator(); - } - if (prevToken.value === ')') { - checkToken = extra.tokens[extra.openParenToken - 1]; - if (checkToken && - checkToken.type === 'Keyword' && - (checkToken.value === 'if' || - checkToken.value === 'while' || - checkToken.value === 'for' || - checkToken.value === 'with')) { - return collectRegex(); - } - return scanPunctuator(); - } - if (prevToken.value === '}') { - // Dividing a function by anything makes little sense, - // but we have to check for that. - if (extra.tokens[extra.openCurlyToken - 3] && - extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { - // Anonymous function. - checkToken = extra.tokens[extra.openCurlyToken - 4]; - if (!checkToken) { - return scanPunctuator(); - } - } else if (extra.tokens[extra.openCurlyToken - 4] && - extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { - // Named function. - checkToken = extra.tokens[extra.openCurlyToken - 5]; - if (!checkToken) { - return collectRegex(); - } - } else { - return scanPunctuator(); - } - // checkToken determines whether the function is - // a declaration or an expression. - if (FnExprTokens.indexOf(checkToken.value) >= 0) { - // It is an expression. - return scanPunctuator(); - } - // It is a declaration. - return collectRegex(); + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); } - return collectRegex(); } - if (prevToken.type === 'Keyword') { - return collectRegex(); + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); } - return scanPunctuator(); + + return delegate.createContinueStatement(label); } - function advance() { - var ch; + // 12.8 The break statement - skipComment(); + function parseBreakStatement() { + var label = null, key; - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - start: index, - end: index - }; - } + expectKeyword('break'); - ch = source.charCodeAt(index); + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B) { + lex(); - if (isIdentifierStart(ch)) { - return scanIdentifier(); - } + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } - // Very common: ( and ) and ; - if (ch === 0x28 || ch === 0x29 || ch === 0x3B) { - return scanPunctuator(); + return delegate.createBreakStatement(null); } - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (ch === 0x27 || ch === 0x22) { - return scanStringLiteral(); + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return delegate.createBreakStatement(null); } + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (ch === 0x2E) { - if (isDecimalDigit(source.charCodeAt(index + 1))) { - return scanNumericLiteral(); + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); } - return scanPunctuator(); } - if (isDecimalDigit(ch)) { - return scanNumericLiteral(); - } + consumeSemicolon(); - // Slash (/) U+002F can also start a regex. - if (extra.tokenize && ch === 0x2F) { - return advanceSlash(); + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); } - return scanPunctuator(); + return delegate.createBreakStatement(label); } - function collectToken() { - var loc, token, range, value; + // 12.9 The return statement - skipComment(); - loc = { - start: { - line: lineNumber, - column: index - lineStart + function parseReturnStatement() { + var argument = null; + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); + } + + // 'return' followed by a space and an identifier is very common. + if (source.charCodeAt(index) === 0x20) { + if (isIdentifierStart(source.charCodeAt(index + 1))) { + argument = parseExpression(); + consumeSemicolon(); + return delegate.createReturnStatement(argument); } - }; + } - token = advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; + if (peekLineTerminator()) { + return delegate.createReturnStatement(null); + } - if (token.type !== Token.EOF) { - value = source.slice(token.start, token.end); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: [token.start, token.end], - loc: loc - }); + if (!match(';')) { + if (!match('}') && lookahead.type !== Token.EOF) { + argument = parseExpression(); + } } - return token; + consumeSemicolon(); + + return delegate.createReturnStatement(argument); } - function lex() { - var token; + // 12.10 The with statement - token = lookahead; - index = token.end; - lineNumber = token.lineNumber; - lineStart = token.lineStart; + function parseWithStatement() { + var object, body; - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); + if (strict) { + // TODO(ikarienator): Should we update the test cases instead? + skipComment(); + throwErrorTolerant({}, Messages.StrictModeWith); + } - index = token.end; - lineNumber = token.lineNumber; - lineStart = token.lineStart; + expectKeyword('with'); - return token; - } + expect('('); - function peek() { - var pos, line, start; + object = parseExpression(); - pos = index; - line = lineNumber; - start = lineStart; - lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); - index = pos; - lineNumber = line; - lineStart = start; - } + expect(')'); - function Position(line, column) { - this.line = line; - this.column = column; - } + body = parseStatement(); - function SourceLocation(startLine, startColumn, line, column) { - this.start = new Position(startLine, startColumn); - this.end = new Position(line, column); + return delegate.createWithStatement(object, body); } - SyntaxTreeDelegate = { + // 12.10 The swith statement - name: 'SyntaxTree', + function parseSwitchCase() { + var test, consequent = [], statement, startToken; - processComment: function (node) { - var lastChild, trailingComments; + startToken = lookahead; + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); - if (node.type === Syntax.Program) { - if (node.body.length > 0) { - return; - } + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; } + statement = parseStatement(); + consequent.push(statement); + } - if (extra.trailingComments.length > 0) { - if (extra.trailingComments[0].range[0] >= node.range[1]) { - trailingComments = extra.trailingComments; - extra.trailingComments = []; - } else { - extra.trailingComments.length = 0; - } - } else { - if (extra.bottomRightStack.length > 0 && - extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && - extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) { - trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; - delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; - } - } + return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken); + } - // Eating the stack. - while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) { - lastChild = extra.bottomRightStack.pop(); - } + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound; - if (lastChild) { - if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) { - node.leadingComments = lastChild.leadingComments; - delete lastChild.leadingComments; - } - } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) { - node.leadingComments = extra.leadingComments; - extra.leadingComments = []; - } + expectKeyword('switch'); + expect('('); - if (trailingComments) { - node.trailingComments = trailingComments; - } + discriminant = parseExpression(); - extra.bottomRightStack.push(node); - }, + expect(')'); - markEnd: function (node, startToken) { - if (extra.range) { - node.range = [startToken.start, index]; - } - if (extra.loc) { - node.loc = new SourceLocation( - startToken.startLineNumber === undefined ? startToken.lineNumber : startToken.startLineNumber, - startToken.start - (startToken.startLineStart === undefined ? startToken.lineStart : startToken.startLineStart), - lineNumber, - index - lineStart - ); - this.postProcess(node); - } + expect('{'); - if (extra.attachComment) { - this.processComment(node); - } - return node; - }, + cases = []; - postProcess: function (node) { - if (extra.source) { - node.loc.source = extra.source; - } - return node; - }, + if (match('}')) { + lex(); + return delegate.createSwitchStatement(discriminant, cases); + } - createArrayExpression: function (elements) { - return { - type: Syntax.ArrayExpression, - elements: elements - }; - }, + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; - createAssignmentExpression: function (operator, left, right) { - return { - type: Syntax.AssignmentExpression, - operator: operator, - left: left, - right: right - }; - }, + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } - createBinaryExpression: function (operator, left, right) { - var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : - Syntax.BinaryExpression; - return { - type: type, - operator: operator, - left: left, - right: right - }; - }, + state.inSwitch = oldInSwitch; - createBlockStatement: function (body) { - return { - type: Syntax.BlockStatement, - body: body - }; - }, + expect('}'); - createBreakStatement: function (label) { - return { - type: Syntax.BreakStatement, - label: label - }; - }, + return delegate.createSwitchStatement(discriminant, cases); + } - createCallExpression: function (callee, args) { - return { - type: Syntax.CallExpression, - callee: callee, - 'arguments': args - }; - }, + // 12.13 The throw statement - createCatchClause: function (param, body) { - return { - type: Syntax.CatchClause, - param: param, - body: body - }; - }, + function parseThrowStatement() { + var argument; - createConditionalExpression: function (test, consequent, alternate) { - return { - type: Syntax.ConditionalExpression, - test: test, - consequent: consequent, - alternate: alternate - }; - }, + expectKeyword('throw'); - createContinueStatement: function (label) { - return { - type: Syntax.ContinueStatement, - label: label - }; - }, + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } - createDebuggerStatement: function () { - return { - type: Syntax.DebuggerStatement - }; - }, + argument = parseExpression(); - createDoWhileStatement: function (body, test) { - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - }, + consumeSemicolon(); - createEmptyStatement: function () { - return { - type: Syntax.EmptyStatement - }; - }, + return delegate.createThrowStatement(argument); + } - createExpressionStatement: function (expression) { - return { - type: Syntax.ExpressionStatement, - expression: expression - }; - }, + // 12.14 The try statement - createForStatement: function (init, test, update, body) { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - }, + function parseCatchClause() { + var param, body, startToken; - createForInStatement: function (left, right, body) { - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - }, + startToken = lookahead; + expectKeyword('catch'); - createFunctionDeclaration: function (id, params, defaults, body) { - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, + expect('('); + if (match(')')) { + throwUnexpected(lookahead); + } - createFunctionExpression: function (id, params, defaults, body) { - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: defaults, - body: body, - rest: null, - generator: false, - expression: false - }; - }, + param = parseVariableIdentifier(); + // 12.14.1 + if (strict && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } - createIdentifier: function (name) { - return { - type: Syntax.Identifier, - name: name - }; - }, + expect(')'); + body = parseBlock(); + return delegate.markEnd(delegate.createCatchClause(param, body), startToken); + } - createIfStatement: function (test, consequent, alternate) { - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - }, + function parseTryStatement() { + var block, handlers = [], finalizer = null; - createLabeledStatement: function (label, body) { - return { - type: Syntax.LabeledStatement, - label: label, - body: body - }; - }, + expectKeyword('try'); - createLiteral: function (token) { - return { - type: Syntax.Literal, - value: token.value, - raw: source.slice(token.start, token.end) - }; - }, + block = parseBlock(); - createMemberExpression: function (accessor, object, property) { - return { - type: Syntax.MemberExpression, - computed: accessor === '[', - object: object, - property: property - }; - }, + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } - createNewExpression: function (callee, args) { - return { - type: Syntax.NewExpression, - callee: callee, - 'arguments': args - }; - }, + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } - createObjectExpression: function (properties) { - return { - type: Syntax.ObjectExpression, - properties: properties - }; - }, + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } - createPostfixExpression: function (operator, argument) { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: false - }; - }, + return delegate.createTryStatement(block, [], handlers, finalizer); + } - createProgram: function (body) { - return { - type: Syntax.Program, - body: body - }; - }, + // 12.15 The debugger statement - createProperty: function (kind, key, value) { - return { - type: Syntax.Property, - key: key, - value: value, - kind: kind - }; - }, + function parseDebuggerStatement() { + expectKeyword('debugger'); - createReturnStatement: function (argument) { - return { - type: Syntax.ReturnStatement, - argument: argument - }; - }, + consumeSemicolon(); - createSequenceExpression: function (expressions) { - return { - type: Syntax.SequenceExpression, - expressions: expressions - }; - }, + return delegate.createDebuggerStatement(); + } - createSwitchCase: function (test, consequent) { - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - }, + // 12 Statements - createSwitchStatement: function (discriminant, cases) { - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - }, + function parseStatement() { + var type = lookahead.type, + expr, + labeledBody, + key, + startToken; - createThisExpression: function () { - return { - type: Syntax.ThisExpression - }; - }, + if (type === Token.EOF) { + throwUnexpected(lookahead); + } - createThrowStatement: function (argument) { - return { - type: Syntax.ThrowStatement, - argument: argument - }; - }, + if (type === Token.Punctuator && lookahead.value === '{') { + return parseBlock(); + } - createTryStatement: function (block, guardedHandlers, handlers, finalizer) { - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: guardedHandlers, - handlers: handlers, - finalizer: finalizer - }; - }, + startToken = lookahead; - createUnaryExpression: function (operator, argument) { - if (operator === '++' || operator === '--') { - return { - type: Syntax.UpdateExpression, - operator: operator, - argument: argument, - prefix: true - }; + if (type === Token.Punctuator) { + switch (lookahead.value) { + case ';': + return delegate.markEnd(parseEmptyStatement(), startToken); + case '(': + return delegate.markEnd(parseExpressionStatement(), startToken); + default: + break; + } + } + + if (type === Token.Keyword) { + switch (lookahead.value) { + case 'break': + return delegate.markEnd(parseBreakStatement(), startToken); + case 'continue': + return delegate.markEnd(parseContinueStatement(), startToken); + case 'debugger': + return delegate.markEnd(parseDebuggerStatement(), startToken); + case 'do': + return delegate.markEnd(parseDoWhileStatement(), startToken); + case 'for': + return delegate.markEnd(parseForStatement(), startToken); + case 'function': + return delegate.markEnd(parseFunctionDeclaration(), startToken); + case 'if': + return delegate.markEnd(parseIfStatement(), startToken); + case 'return': + return delegate.markEnd(parseReturnStatement(), startToken); + case 'switch': + return delegate.markEnd(parseSwitchStatement(), startToken); + case 'throw': + return delegate.markEnd(parseThrowStatement(), startToken); + case 'try': + return delegate.markEnd(parseTryStatement(), startToken); + case 'var': + return delegate.markEnd(parseVariableStatement(), startToken); + case 'while': + return delegate.markEnd(parseWhileStatement(), startToken); + case 'with': + return delegate.markEnd(parseWithStatement(), startToken); + default: + break; } - return { - type: Syntax.UnaryExpression, - operator: operator, - argument: argument, - prefix: true - }; - }, + } - createVariableDeclaration: function (declarations, kind) { - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - }, + expr = parseExpression(); - createVariableDeclarator: function (id, init) { - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - }, + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); - createWhileStatement: function (test, body) { - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - }, + key = '$' + expr.name; + if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } - createWithStatement: function (object, body) { - return { - type: Syntax.WithStatement, - object: object, - body: body - }; + state.labelSet[key] = true; + labeledBody = parseStatement(); + delete state.labelSet[key]; + return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken); } - }; - // Return true if there is a line terminator before the next token. + consumeSemicolon(); - function peekLineTerminator() { - var pos, line, start, found; + return delegate.markEnd(delegate.createExpressionStatement(expr), startToken); + } - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; + // 13 Function Definition - return found; - } + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken; - // Throw an exception + startToken = lookahead; + expect('{'); - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - assert(index < args.length, 'Message reference must be in range'); - return args[index]; + while (index < length) { + if (lookahead.type !== Token.StringLiteral) { + break; + } + token = lookahead; + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); } - ); + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.start; - error.lineNumber = token.lineNumber; - error.column = token.start - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; + + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); } - error.description = msg; - throw error; + expect('}'); + + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; + + return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken); } - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; + function parseParams(firstRestricted) { + var param, params = [], token, stricted, paramSet, key, message; + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead; + param = parseVariableIdentifier(); + key = '$' + token.value; + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[key] = true; + if (match(')')) { + break; + } + expect(','); } } + + expect(')'); + + return { + params: params, + stricted: stricted, + firstRestricted: firstRestricted, + message: message + }; } + function parseFunctionDeclaration() { + var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken; - // Throw an exception because of the token. + startToken = lookahead; - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); + expectKeyword('function'); + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } } - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; } - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); + if (strict && stricted) { + throwErrorTolerant(stricted, message); } + strict = previousStrict; - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; + return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken); + } + + function parseFunctionExpression() { + var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken; + + startToken = lookahead; + expectKeyword('function'); + + if (!match('(')) { + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } } - throwError(token, Messages.UnexpectedToken, token.value); } - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); } + strict = previousStrict; + + return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken); } - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. + // 14 Program - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); + function parseSourceElement() { + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(lookahead.value); + case 'function': + return parseFunctionDeclaration(); + default: + return parseStatement(); + } + } + + if (lookahead.type !== Token.EOF) { + return parseStatement(); } } - // Return true if the next token matches the specified punctuator. + function parseSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; - function match(value) { - return lookahead.type === Token.Punctuator && lookahead.value === value; - } + while (index < length) { + token = lookahead; + if (token.type !== Token.StringLiteral) { + break; + } - // Return true if the next token matches the specified keyword + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } - function matchKeyword(keyword) { - return lookahead.type === Token.Keyword && lookahead.value === keyword; + while (index < length) { + sourceElement = parseSourceElement(); + /* istanbul ignore if */ + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; } - // Return true if the next token is an assignment operator + function parseProgram() { + var body, startToken; - function matchAssign() { - var op; + skipComment(); + peek(); + startToken = lookahead; + strict = false; - if (lookahead.type !== Token.Punctuator) { - return false; - } - op = lookahead.value; - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; + body = parseSourceElements(); + return delegate.markEnd(delegate.createProgram(body), startToken); } - function consumeSemicolon() { - var line; + function filterTokenLocation() { + var i, entry, token, tokens = []; - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B || match(';')) { - lex(); - return; + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); } - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } + extra.tokens = tokens; + } - if (lookahead.type !== Token.EOF && !match('}')) { - throwUnexpected(lookahead); + function tokenize(code, options) { + var toString, + token, + tokens; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); } - } - // Return true if provided expression is LeftHandSideExpression + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } + extra = {}; - // 11.1.4 Array Initialiser + // Options matching. + options = options || {}; - function parseArrayInitialiser() { - var elements = [], startToken; + // Of course we collect tokens here. + options.tokens = true; + extra.tokens = []; + extra.tokenize = true; + // The following two fields are necessary to compute the Regex tokens. + extra.openParenToken = -1; + extra.openCurlyToken = -1; - startToken = lookahead; - expect('['); + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } - if (!match(']')) { - expect(','); + try { + peek(); + if (lookahead.type === Token.EOF) { + return extra.tokens; + } + + token = lex(); + while (lookahead.type !== Token.EOF) { + try { + token = lex(); + } catch (lexError) { + token = lookahead; + if (extra.errors) { + extra.errors.push(lexError); + // We have to break on the first error + // to avoid infinite loops. + break; + } else { + throw lexError; + } } } + + filterTokenLocation(); + tokens = extra.tokens; + if (typeof extra.comments !== 'undefined') { + tokens.comments = extra.comments; + } + if (typeof extra.errors !== 'undefined') { + tokens.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; } - - lex(); - - return delegate.markEnd(delegate.createArrayExpression(elements), startToken); + return tokens; } - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body, startToken; + function parse(code, options) { + var program, toString; - previousStrict = strict; - startToken = lookahead; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); } - strict = previousStrict; - return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken); - } - function parseObjectPropertyKey() { - var token, startToken; + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; - startToken = lookahead; - token = lex(); + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. + if (extra.loc && options.source !== null && options.source !== undefined) { + extra.source = toString(options.source); + } - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + if (extra.attachComment) { + extra.range = true; + extra.comments = []; + extra.bottomRightStack = []; + extra.trailingComments = []; + extra.leadingComments = []; } - return delegate.markEnd(delegate.createLiteral(token), startToken); } - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); - } - - function parseObjectProperty() { - var token, key, id, value, param, startToken; - - token = lookahead; - startToken = lookahead; - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - value = parsePropertyFunction([]); - return delegate.markEnd(delegate.createProperty('get', key, value), startToken); + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + program.comments = extra.comments; } - if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead; - if (token.type !== Token.Identifier) { - expect(')'); - throwErrorTolerant(token, Messages.UnexpectedToken, token.value); - value = parsePropertyFunction([]); - } else { - param = [ parseVariableIdentifier() ]; - expect(')'); - value = parsePropertyFunction(param, token); - } - return delegate.markEnd(delegate.createProperty('set', key, value), startToken); + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; } - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', id, value), startToken); - } - if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - value = parseAssignmentExpression(); - return delegate.markEnd(delegate.createProperty('init', key, value), startToken); + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; } + + return program; } - function parseObjectInitialiser() { - var properties = [], property, name, key, kind, map = {}, toString = String, startToken; + // Sync with *.json manifests. + exports.version = '1.2.2'; - startToken = lookahead; + exports.tokenize = tokenize; - expect('{'); + exports.parse = parse; - while (!match('}')) { - property = parseObjectProperty(); + // Deep copy. + /* istanbul ignore next */ + exports.Syntax = (function () { + var name, types = {}; - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; + if (typeof Object.create === 'function') { + types = Object.create(null); + } - key = '$' + name; - if (Object.prototype.hasOwnProperty.call(map, key)) { - if (map[key] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[key] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[key] |= kind; - } else { - map[key] = kind; + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; } + } - properties.push(property); - - if (!match('}')) { - expect(','); - } + if (typeof Object.freeze === 'function') { + Object.freeze(types); } - expect('}'); + return types; + }()); - return delegate.markEnd(delegate.createObjectExpression(properties), startToken); - } +})); +/* vim: set sw=4 ts=4 et tw=80 : */ - // 11.1.6 The Grouping Operator - function parseGroupExpression() { - var expr; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/aesprim-browser.js","/node_modules/jsonpath/generated") +},{"buffer":57,"lYpoI2":59}],94:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/* parser generated by jison 0.4.13 */ +/* + Returns a Parser object of the following structure: - expect('('); + Parser: { + yy: {} + } - expr = parseExpression(); + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), - expect(')'); + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), - return expr; - } + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, + } + } - // 11.1 Primary Expressions - function parsePrimaryExpression() { - var type, token, expr, startToken; + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + } - if (match('(')) { - return parseGroupExpression(); - } - if (match('[')) { - return parseArrayInitialiser(); - } + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var parser = (function(){ +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"JSON_PATH":3,"DOLLAR":4,"PATH_COMPONENTS":5,"LEADING_CHILD_MEMBER_EXPRESSION":6,"PATH_COMPONENT":7,"MEMBER_COMPONENT":8,"SUBSCRIPT_COMPONENT":9,"CHILD_MEMBER_COMPONENT":10,"DESCENDANT_MEMBER_COMPONENT":11,"DOT":12,"MEMBER_EXPRESSION":13,"DOT_DOT":14,"STAR":15,"IDENTIFIER":16,"SCRIPT_EXPRESSION":17,"INTEGER":18,"END":19,"CHILD_SUBSCRIPT_COMPONENT":20,"DESCENDANT_SUBSCRIPT_COMPONENT":21,"[":22,"SUBSCRIPT":23,"]":24,"SUBSCRIPT_EXPRESSION":25,"SUBSCRIPT_EXPRESSION_LIST":26,"SUBSCRIPT_EXPRESSION_LISTABLE":27,",":28,"STRING_LITERAL":29,"ARRAY_SLICE":30,"FILTER_EXPRESSION":31,"QQ_STRING":32,"Q_STRING":33,"$accept":0,"$end":1}, +terminals_: {2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"}, +productions_: [0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */ +/**/) { +/* this == yyval */ +if (!yy.ast) { + yy.ast = _ast; + _ast.initialize(); +} - if (match('{')) { - return parseObjectInitialiser(); +var $0 = $$.length - 1; +switch (yystate) { +case 1:yy.ast.set({ expression: { type: "root", value: $$[$0] } }); yy.ast.unshift(); return yy.ast.yield() +break; +case 2:yy.ast.set({ expression: { type: "root", value: $$[$0-1] } }); yy.ast.unshift(); return yy.ast.yield() +break; +case 3:yy.ast.unshift(); return yy.ast.yield() +break; +case 4:yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $$[$0-1] }}); yy.ast.unshift(); return yy.ast.yield() +break; +case 5: +break; +case 6: +break; +case 7:yy.ast.set({ operation: "member" }); yy.ast.push() +break; +case 8:yy.ast.set({ operation: "subscript" }); yy.ast.push() +break; +case 9:yy.ast.set({ scope: "child" }) +break; +case 10:yy.ast.set({ scope: "descendant" }) +break; +case 11: +break; +case 12:yy.ast.set({ scope: "child", operation: "member" }) +break; +case 13: +break; +case 14:yy.ast.set({ expression: { type: "wildcard", value: $$[$0] } }) +break; +case 15:yy.ast.set({ expression: { type: "identifier", value: $$[$0] } }) +break; +case 16:yy.ast.set({ expression: { type: "script_expression", value: $$[$0] } }) +break; +case 17:yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($$[$0]) } }) +break; +case 18: +break; +case 19:yy.ast.set({ scope: "child" }) +break; +case 20:yy.ast.set({ scope: "descendant" }) +break; +case 21: +break; +case 22: +break; +case 23: +break; +case 24:$$[$0].length > 1? yy.ast.set({ expression: { type: "union", value: $$[$0] } }) : this.$ = $$[$0] +break; +case 25:this.$ = [$$[$0]] +break; +case 26:this.$ = $$[$0-2].concat($$[$0]) +break; +case 27:this.$ = { expression: { type: "numeric_literal", value: parseInt($$[$0]) } }; yy.ast.set(this.$) +break; +case 28:this.$ = { expression: { type: "string_literal", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 29:this.$ = { expression: { type: "slice", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 30:this.$ = { expression: { type: "wildcard", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 31:this.$ = { expression: { type: "script_expression", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 32:this.$ = { expression: { type: "filter_expression", value: $$[$0] } }; yy.ast.set(this.$) +break; +case 33:this.$ = $$[$0] +break; +case 34:this.$ = $$[$0] +break; +} +}, +table: [{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}], +defaultActions: {27:[2,23],29:[2,30],30:[2,31],31:[2,32]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + throw new Error(str); + } +}, +parse: function parse(input) { + var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + this.yy.parser = this; + if (typeof this.lexer.yylloc == 'undefined') { + this.lexer.yylloc = {}; + } + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); + var ranges = this.lexer.options && this.lexer.options.ranges; + if (typeof this.yy.parseError === 'function') { + this.parseError = this.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + function lex() { + var token; + token = self.lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; } - - type = lookahead.type; - startToken = lookahead; - - if (type === Token.Identifier) { - expr = delegate.createIdentifier(lex().value); - } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && lookahead.octal) { - throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); + return token; + } + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); } - expr = delegate.createLiteral(lex()); - } else if (type === Token.Keyword) { - if (matchKeyword('function')) { - return parseFunctionExpression(); + action = table[state] && table[state][symbol]; + } + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); + } + } + if (this.lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: this.lexer.match, + token: this.terminals_[symbol] || symbol, + line: this.lexer.yylineno, + loc: yyloc, + expected: expected + }); } - if (matchKeyword('this')) { - lex(); - expr = delegate.createThisExpression(); + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) { + recovering--; + } } else { - throwUnexpected(lex()); + symbol = preErrorSymbol; + preErrorSymbol = null; } - } else if (type === Token.BooleanLiteral) { - token = lex(); - token.value = (token.value === 'true'); - expr = delegate.createLiteral(token); - } else if (type === Token.NullLiteral) { - token = lex(); - token.value = null; - expr = delegate.createLiteral(token); - } else if (match('/') || match('/=')) { - if (typeof extra.tokens !== 'undefined') { - expr = delegate.createLiteral(collectRegex()); - } else { - expr = delegate.createLiteral(scanRegExp()); + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + this.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; } - peek(); - } else { - throwUnexpected(lex()); + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; } - - return delegate.markEnd(expr, startToken); } + return true; +}}; +var _ast = { - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; + initialize: function() { + this._nodes = []; + this._node = {}; + this._stash = []; + }, - expect('('); + set: function(props) { + for (var k in props) this._node[k] = props[k]; + return this._node; + }, - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } + node: function(obj) { + if (arguments.length) this._node = obj; + return this._node; + }, - expect(')'); + push: function() { + this._nodes.push(this._node); + this._node = {}; + }, - return args; - } + unshift: function() { + this._nodes.unshift(this._node); + this._node = {}; + }, - function parseNonComputedProperty() { - var token, startToken; + yield: function() { + var _nodes = this._nodes; + this.initialize(); + return _nodes; + } +}; +/* generated by jison-lex 0.2.1 */ +var lexer = (function(){ +var lexer = { - startToken = lookahead; - token = lex(); +EOF:1, - if (!isIdentifierName(token)) { - throwUnexpected(token); +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); } + }, - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); - } - - function parseNonComputedMember() { - expect('.'); +// resets the lexer, sets new input +setInput:function (input) { + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0,0]; + } + this.offset = 0; + return this; + }, - return parseNonComputedProperty(); - } +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } - function parseComputedMember() { - var expr; + this._input = this._input.slice(1); + return ch; + }, - expect('['); +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); - expr = parseExpression(); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); - expect(']'); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r = this.yylloc.range; - return expr; - } + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; - function parseNewExpression() { - var callee, args, startToken; + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, - startToken = lookahead; - expectKeyword('new'); - callee = parseLeftHandSideExpression(); - args = match('(') ? parseArguments() : []; +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, - return delegate.markEnd(delegate.createNewExpression(callee, args), startToken); - } +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); - function parseLeftHandSideExpressionAllowCall() { - var previousAllowIn, expr, args, property, startToken; + } + return this; + }, - startToken = lookahead; +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, - previousAllowIn = state.allowIn; - state.allowIn = true; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, - for (;;) { - if (match('.')) { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); - } else if (match('(')) { - args = parseArguments(); - expr = delegate.createCallExpression(expr, args); - } else if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - break; - } - delegate.markEnd(expr, startToken); +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, - return expr; - } - - function parseLeftHandSideExpression() { - var previousAllowIn, expr, property, startToken; - - startToken = lookahead; +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, - previousAllowIn = state.allowIn; - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - state.allowIn = previousAllowIn; +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; - while (match('.') || match('[')) { - if (match('[')) { - property = parseComputedMember(); - expr = delegate.createMemberExpression('[', expr, property); - } else { - property = parseNonComputedMember(); - expr = delegate.createMemberExpression('.', expr, property); + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } - delegate.markEnd(expr, startToken); } - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr, token, startToken = lookahead; - - expr = parseLeftHandSideExpressionAllowCall(); - - if (lookahead.type === Token.Punctuator) { - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); - } - - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } - - token = lex(); - expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken); + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; } + return false; // rule action called reject() implying the next rule should be tested instead. } + return false; + }, - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr, startToken; - - if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { - expr = parsePostfixExpression(); - } else if (match('++') || match('--')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); - } +// return next match in input +next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } - if (!isLeftHandSide(expr)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } } - - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - } else if (match('+') || match('-') || match('~') || match('!')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - startToken = lookahead; - token = lex(); - expr = parseUnaryExpression(); - expr = delegate.createUnaryExpression(token.value, expr); - expr = delegate.markEnd(expr, startToken); - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + if (this._input === "") { + return this.EOF; } else { - expr = parsePostfixExpression(); + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); } + }, - return expr; - } - - function binaryPrecedence(token, allowIn) { - var prec = 0; - - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return 0; +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; + } else { + return this.lex(); } + }, - switch (token.value) { - case '||': - prec = 1; - break; - - case '&&': - prec = 2; - break; - - case '|': - prec = 3; - break; - - case '^': - prec = 4; - break; - - case '&': - prec = 5; - break; +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, - case '==': - case '!=': - case '===': - case '!==': - prec = 6; - break; +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, - case '<': - case '>': - case '<=': - case '>=': - case 'instanceof': - prec = 7; - break; +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, - case 'in': - prec = allowIn ? 7 : 0; - break; +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; + } + }, - case '<<': - case '>>': - case '>>>': - prec = 8; - break; +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, - case '+': - case '-': - prec = 9; - break; +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START +/**/) { - case '*': - case '/': - case '%': - prec = 11; - break; +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:return 4 +break; +case 1:return 14 +break; +case 2:return 12 +break; +case 3:return 15 +break; +case 4:return 16 +break; +case 5:return 22 +break; +case 6:return 24 +break; +case 7:return 28 +break; +case 8:return 30 +break; +case 9:return 18 +break; +case 10:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 32; +break; +case 11:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 33; +break; +case 12:return 17 +break; +case 13:return 31 +break; +} +}, +rules: [/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}} +}; +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; +} +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); - default: - break; - } - return prec; +if (typeof require !== 'undefined' && typeof exports !== 'undefined') { +exports.parser = parser; +exports.Parser = parser.Parser; +exports.parse = function () { return parser.parse.apply(parser, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); } + var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if (typeof module !== 'undefined' && require.main === module) { + exports.main(process.argv.slice(1)); +} +} - // 11.5 Multiplicative Operators - // 11.6 Additive Operators - // 11.7 Bitwise Shift Operators - // 11.8 Relational Operators - // 11.9 Equality Operators - // 11.10 Binary Bitwise Operators - // 11.11 Binary Logical Operators - - function parseBinaryExpression() { - var marker, markers, expr, token, prec, stack, right, operator, left, i; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/parser.js","/node_modules/jsonpath/generated") +},{"buffer":57,"fs":56,"lYpoI2":59,"path":106}],95:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = require('./lib/index'); - marker = lookahead; - left = parseUnaryExpression(); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/index.js","/node_modules/jsonpath") +},{"./lib/index":99,"buffer":57,"lYpoI2":59}],96:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = { + identifier: "[a-zA-Z_]+[a-zA-Z0-9_]*", + integer: "-?(?:0|[1-9][0-9]*)", + qq_string: "\"(?:\\\\[\"bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\"\\\\])*\"", + q_string: "'(?:\\\\[\'bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\'\\\\])*'" +}; - token = lookahead; - prec = binaryPrecedence(token, state.allowIn); - if (prec === 0) { - return left; - } - token.prec = prec; - lex(); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/dict.js","/node_modules/jsonpath/lib") +},{"buffer":57,"lYpoI2":59}],97:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var dict = require('./dict'); +var fs = require('fs'); +var grammar = { - markers = [marker, lookahead]; - right = parseUnaryExpression(); + lex: { - stack = [left, token, right]; + macros: { + esc: "\\\\", + int: dict.integer + }, - while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { + rules: [ + ["\\$", "return 'DOLLAR'"], + ["\\.\\.", "return 'DOT_DOT'"], + ["\\.", "return 'DOT'"], + ["\\*", "return 'STAR'"], + [dict.identifier, "return 'IDENTIFIER'"], + ["\\[", "return '['"], + ["\\]", "return ']'"], + [",", "return ','"], + ["({int})?\\:({int})?(\\:({int})?)?", "return 'ARRAY_SLICE'"], + ["{int}", "return 'INTEGER'"], + [dict.qq_string, "yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"], + [dict.q_string, "yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"], + ["\\(.+?\\)(?=\\])", "return 'SCRIPT_EXPRESSION'"], + ["\\?\\(.+?\\)(?=\\])", "return 'FILTER_EXPRESSION'"] + ] + }, - // Reduce: make a binary expression from the three topmost entries. - while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { - right = stack.pop(); - operator = stack.pop().value; - left = stack.pop(); - expr = delegate.createBinaryExpression(operator, left, right); - markers.pop(); - marker = markers[markers.length - 1]; - delegate.markEnd(expr, marker); - stack.push(expr); - } + start: "JSON_PATH", - // Shift. - token = lex(); - token.prec = prec; - stack.push(token); - markers.push(lookahead); - expr = parseUnaryExpression(); - stack.push(expr); - } + bnf: { - // Final reduce to clean-up the stack. - i = stack.length - 1; - expr = stack[i]; - markers.pop(); - while (i > 1) { - expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); - i -= 2; - marker = markers.pop(); - delegate.markEnd(expr, marker); - } + JSON_PATH: [ + [ 'DOLLAR', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], + [ 'DOLLAR PATH_COMPONENTS', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], + [ 'LEADING_CHILD_MEMBER_EXPRESSION', 'yy.ast.unshift(); return yy.ast.yield()' ], + [ 'LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS', 'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()' ] ], - return expr; - } + PATH_COMPONENTS: [ + [ 'PATH_COMPONENT', '' ], + [ 'PATH_COMPONENTS PATH_COMPONENT', '' ] ], + PATH_COMPONENT: [ + [ 'MEMBER_COMPONENT', 'yy.ast.set({ operation: "member" }); yy.ast.push()' ], + [ 'SUBSCRIPT_COMPONENT', 'yy.ast.set({ operation: "subscript" }); yy.ast.push() ' ] ], - // 11.12 Conditional Operator + MEMBER_COMPONENT: [ + [ 'CHILD_MEMBER_COMPONENT', 'yy.ast.set({ scope: "child" })' ], + [ 'DESCENDANT_MEMBER_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], - function parseConditionalExpression() { - var expr, previousAllowIn, consequent, alternate, startToken; + CHILD_MEMBER_COMPONENT: [ + [ 'DOT MEMBER_EXPRESSION', '' ] ], - startToken = lookahead; + LEADING_CHILD_MEMBER_EXPRESSION: [ + [ 'MEMBER_EXPRESSION', 'yy.ast.set({ scope: "child", operation: "member" })' ] ], - expr = parseBinaryExpression(); + DESCENDANT_MEMBER_COMPONENT: [ + [ 'DOT_DOT MEMBER_EXPRESSION', '' ] ], - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - alternate = parseAssignmentExpression(); + MEMBER_EXPRESSION: [ + [ 'STAR', 'yy.ast.set({ expression: { type: "wildcard", value: $1 } })' ], + [ 'IDENTIFIER', 'yy.ast.set({ expression: { type: "identifier", value: $1 } })' ], + [ 'SCRIPT_EXPRESSION', 'yy.ast.set({ expression: { type: "script_expression", value: $1 } })' ], + [ 'INTEGER', 'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })' ], + [ 'END', '' ] ], - expr = delegate.createConditionalExpression(expr, consequent, alternate); - delegate.markEnd(expr, startToken); - } + SUBSCRIPT_COMPONENT: [ + [ 'CHILD_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "child" })' ], + [ 'DESCENDANT_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], - return expr; - } + CHILD_SUBSCRIPT_COMPONENT: [ + [ '[ SUBSCRIPT ]', '' ] ], - // 11.13 Assignment Operators + DESCENDANT_SUBSCRIPT_COMPONENT: [ + [ 'DOT_DOT [ SUBSCRIPT ]', '' ] ], - function parseAssignmentExpression() { - var token, left, right, node, startToken; + SUBSCRIPT: [ + [ 'SUBSCRIPT_EXPRESSION', '' ], + [ 'SUBSCRIPT_EXPRESSION_LIST', '$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1' ] ], - token = lookahead; - startToken = lookahead; + SUBSCRIPT_EXPRESSION_LIST: [ + [ 'SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = [$1]'], + [ 'SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = $1.concat($3)' ] ], - node = left = parseConditionalExpression(); + SUBSCRIPT_EXPRESSION_LISTABLE: [ + [ 'INTEGER', '$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)' ], + [ 'STRING_LITERAL', '$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)' ], + [ 'ARRAY_SLICE', '$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)' ] ], - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(left)) { - throwErrorTolerant({}, Messages.InvalidLHSInAssignment); - } + SUBSCRIPT_EXPRESSION: [ + [ 'STAR', '$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)' ], + [ 'SCRIPT_EXPRESSION', '$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)' ], + [ 'FILTER_EXPRESSION', '$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)' ] ], - // 11.13.1 - if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } + STRING_LITERAL: [ + [ 'QQ_STRING', "$$ = $1" ], + [ 'Q_STRING', "$$ = $1" ] ] + } +}; +if (fs.readFileSync) { + grammar.moduleInclude = fs.readFileSync(require.resolve("../include/module.js")); + grammar.actionInclude = fs.readFileSync(require.resolve("../include/action.js")); +} - token = lex(); - right = parseAssignmentExpression(); - node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken); - } +module.exports = grammar; - return node; - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/grammar.js","/node_modules/jsonpath/lib") +},{"./dict":96,"buffer":57,"fs":56,"lYpoI2":59}],98:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var aesprim = require('./aesprim'); +var slice = require('./slice'); +var _evaluate = require('static-eval'); +var _uniq = require('underscore').uniq; - // 11.14 Comma Operator +var Handlers = function() { + return this.initialize.apply(this, arguments); +} - function parseExpression() { - var expr, startToken = lookahead; +Handlers.prototype.initialize = function() { + this.traverse = traverser(true); + this.descend = traverser(); +} - expr = parseAssignmentExpression(); +Handlers.prototype.keys = Object.keys; - if (match(',')) { - expr = delegate.createSequenceExpression([ expr ]); +Handlers.prototype.resolve = function(component) { - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } + var key = [ component.operation, component.scope, component.expression.type ].join('-'); + var method = this._fns[key]; - delegate.markEnd(expr, startToken); - } + if (!method) throw new Error("couldn't resolve key: " + key); + return method.bind(this); +}; - return expr; - } +Handlers.prototype.register = function(key, handler) { - // 12.1 Block + if (!handler instanceof Function) { + throw new Error("handler must be a function"); + } - function parseStatementList() { - var list = [], - statement; + this._fns[key] = handler; +}; - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } +Handlers.prototype._fns = { - return list; + 'member-child-identifier': function(component, partial) { + var key = component.expression.value; + var value = partial.value; + if (value instanceof Object && key in value) { + return [ { value: value[key], path: partial.path.concat(key) } ] } + }, - function parseBlock() { - var block, startToken; - - startToken = lookahead; - expect('{'); + 'member-descendant-identifier': + _traverse(function(key, value, ref) { return key == ref }), - block = parseStatementList(); + 'subscript-child-numeric_literal': + _descend(function(key, value, ref) { return key === ref }), - expect('}'); + 'member-child-numeric_literal': + _descend(function(key, value, ref) { return String(key) === String(ref) }), - return delegate.markEnd(delegate.createBlockStatement(block), startToken); - } + 'subscript-descendant-numeric_literal': + _traverse(function(key, value, ref) { return key === ref }), - // 12.2 Variable Statement + 'member-child-wildcard': + _descend(function() { return true }), - function parseVariableIdentifier() { - var token, startToken; + 'member-descendant-wildcard': + _traverse(function() { return true }), - startToken = lookahead; - token = lex(); + 'subscript-descendant-wildcard': + _traverse(function() { return true }), - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } + 'subscript-child-wildcard': + _descend(function() { return true }), - return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + 'subscript-child-slice': function(component, partial) { + if (is_array(partial.value)) { + var args = component.expression.value.split(':').map(_parse_nullable_int); + var values = partial.value.map(function(v, i) { return { value: v, path: partial.path.concat(i) } }); + return slice.apply(null, [values].concat(args)); } + }, - function parseVariableDeclaration(kind) { - var init = null, id, startToken; + 'subscript-child-union': function(component, partial) { + var results = []; + component.expression.value.forEach(function(component) { + var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; + var handler = this.resolve(_component); + var _results = handler(_component, partial); + if (_results) { + results = results.concat(_results); + } + }, this); - startToken = lookahead; - id = parseVariableIdentifier(); + return unique(results); + }, - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } + 'subscript-descendant-union': function(component, partial, count) { - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } + var jp = require('..'); + var self = this; - return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken); - } + var results = []; + var nodes = jp.nodes(partial, '$..*').slice(1); - function parseVariableDeclarationList(kind) { - var list = []; + nodes.forEach(function(node) { + if (results.length >= count) return; + component.expression.value.forEach(function(component) { + var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; + var handler = self.resolve(_component); + var _results = handler(_component, node); + results = results.concat(_results); + }); + }); - do { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } while (index < length); + return unique(results); + }, - return list; - } + 'subscript-child-filter_expression': function(component, partial, count) { - function parseVariableStatement() { - var declarations; + // slice out the expression from ?(expression) + var src = component.expression.value.slice(2, -1); + var ast = aesprim.parse(src).body[0].expression; - expectKeyword('var'); + var passable = function(key, value) { + return evaluate(ast, { '@': value }); + } - declarations = parseVariableDeclarationList(); + return this.descend(partial, null, passable, count); - consumeSemicolon(); + }, - return delegate.createVariableDeclaration(declarations, 'var'); - } + 'subscript-descendant-filter_expression': function(component, partial, count) { - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations, startToken; + // slice out the expression from ?(expression) + var src = component.expression.value.slice(2, -1); + var ast = aesprim.parse(src).body[0].expression; - startToken = lookahead; + var passable = function(key, value) { + return evaluate(ast, { '@': value }); + } - expectKeyword(kind); + return this.traverse(partial, null, passable, count); + }, - declarations = parseVariableDeclarationList(kind); + 'subscript-child-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$[{{value}}]'); + }, - consumeSemicolon(); + 'member-child-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$.{{value}}'); + }, - return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken); - } + 'member-descendant-script_expression': function(component, partial) { + var exp = component.expression.value.slice(1, -1); + return eval_recurse(partial, exp, '$..value'); + } +}; - // 12.3 Empty Statement +Handlers.prototype._fns['subscript-child-string_literal'] = + Handlers.prototype._fns['member-child-identifier']; - function parseEmptyStatement() { - expect(';'); - return delegate.createEmptyStatement(); - } +Handlers.prototype._fns['member-descendant-numeric_literal'] = + Handlers.prototype._fns['subscript-descendant-string_literal'] = + Handlers.prototype._fns['member-descendant-identifier']; - // 12.4 Expression Statement +function eval_recurse(partial, src, template) { - function parseExpressionStatement() { - var expr = parseExpression(); - consumeSemicolon(); - return delegate.createExpressionStatement(expr); - } + var jp = require('./index'); + var ast = aesprim.parse(src).body[0].expression; + var value = evaluate(ast, { '@': partial.value }); + var path = template.replace(/\{\{\s*value\s*\}\}/g, value); - // 12.5 If statement + var results = jp.nodes(partial.value, path); + results.forEach(function(r) { + r.path = partial.path.concat(r.path.slice(1)); + }); - function parseIfStatement() { - var test, consequent, alternate; + return results; +} - expectKeyword('if'); +function is_array(val) { + return Array.isArray(val); +} - expect('('); +function is_object(val) { + // is this a non-array, non-null object? + return val && !(val instanceof Array) && val instanceof Object; +} - test = parseExpression(); +function traverser(recurse) { - expect(')'); + return function(partial, ref, passable, count) { - consequent = parseStatement(); + var value = partial.value; + var path = partial.path; - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } + var results = []; - return delegate.createIfStatement(test, consequent, alternate); - } + var descend = function(value, path) { - // 12.6 Iteration Statements + if (is_array(value)) { + value.forEach(function(element, index) { + if (results.length >= count) { return } + if (passable(index, element, ref)) { + results.push({ path: path.concat(index), value: element }); + } + }); + value.forEach(function(element, index) { + if (results.length >= count) { return } + if (recurse) { + descend(element, path.concat(index)); + } + }); + } else if (is_object(value)) { + this.keys(value).forEach(function(k) { + if (results.length >= count) { return } + if (passable(k, value[k], ref)) { + results.push({ path: path.concat(k), value: value[k] }); + } + }) + this.keys(value).forEach(function(k) { + if (results.length >= count) { return } + if (recurse) { + descend(value[k], path.concat(k)); + } + }); + } + }.bind(this); + descend(value, path); + return results; + } +} - function parseDoWhileStatement() { - var body, test, oldInIteration; +function _descend(passable) { + return function(component, partial, count) { + return this.descend(partial, component.expression.value, passable, count); + } +} - expectKeyword('do'); +function _traverse(passable) { + return function(component, partial, count) { + return this.traverse(partial, component.expression.value, passable, count); + } +} - oldInIteration = state.inIteration; - state.inIteration = true; +function evaluate() { + try { return _evaluate.apply(this, arguments) } + catch (e) { } +} - body = parseStatement(); +function unique(results) { + results = results.filter(function(d) { return d }) + return _uniq( + results, + function(r) { return r.path.map(function(c) { return String(c).replace('-', '--') }).join('-') } + ); +} - state.inIteration = oldInIteration; +function _parse_nullable_int(val) { + var sval = String(val); + return sval.match(/^-?[0-9]+$/) ? parseInt(sval) : null; +} - expectKeyword('while'); +module.exports = Handlers; - expect('('); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/handlers.js","/node_modules/jsonpath/lib") +},{"..":99,"./aesprim":93,"./index":99,"./slice":101,"buffer":57,"lYpoI2":59,"static-eval":111,"underscore":102}],99:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var assert = require('assert'); +var dict = require('./dict'); +var Parser = require('./parser'); +var Handlers = require('./handlers'); - test = parseExpression(); +var JSONPath = function() { + this.initialize.apply(this, arguments); +}; - expect(')'); +JSONPath.prototype.initialize = function() { + this.parser = new Parser(); + this.handlers = new Handlers(); +}; - if (match(';')) { - lex(); - } +JSONPath.prototype.parse = function(string) { + assert.ok(_is_string(string), "we need a path"); + return this.parser.parse(string); +}; - return delegate.createDoWhileStatement(body, test); - } +JSONPath.prototype.parent = function(obj, string) { - function parseWhileStatement() { - var test, body, oldInIteration; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - expectKeyword('while'); + var node = this.nodes(obj, string)[0]; + var key = node.path.pop(); /* jshint unused:false */ + return this.value(obj, node.path); +} - expect('('); +JSONPath.prototype.apply = function(obj, string, fn) { - test = parseExpression(); + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); + assert.equal(typeof fn, "function", "fn needs to be function") - expect(')'); + var nodes = this.nodes(obj, string).sort(function(a, b) { + // sort nodes so we apply from the bottom up + return b.path.length - a.path.length; + }); - oldInIteration = state.inIteration; - state.inIteration = true; + nodes.forEach(function(node) { + var key = node.path.pop(); + var parent = this.value(obj, this.stringify(node.path)); + var val = node.value = fn.call(obj, parent[key]); + parent[key] = val; + }, this); - body = parseStatement(); + return nodes; +} - state.inIteration = oldInIteration; +JSONPath.prototype.value = function(obj, path, value) { - return delegate.createWhileStatement(test, body); - } + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(path, "we need a path"); - function parseForVariableDeclaration() { - var token, declarations, startToken; + if (arguments.length >= 3) { + var node = this.nodes(obj, path).shift(); + if (!node) return this._vivify(obj, path, value); + var key = node.path.slice(-1).shift(); + var parent = this.parent(obj, this.stringify(node.path)); + parent[key] = value; + } + return this.query(obj, this.stringify(path), 1).shift(); +} - startToken = lookahead; - token = lex(); - declarations = parseVariableDeclarationList(); +JSONPath.prototype._vivify = function(obj, string, value) { - return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken); - } + var self = this; - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - init = test = update = null; + var path = this.parser.parse(string) + .map(function(component) { return component.expression.value }); - expectKeyword('for'); + var setValue = function(path, value) { + var key = path.pop(); + var node = self.value(obj, path); + if (!node) { + setValue(path.concat(), typeof key === 'string' ? {} : []); + node = self.value(obj, path); + } + node[key] = value; + } + setValue(path, value); + return this.query(obj, string)[0]; +} - expect('('); +JSONPath.prototype.query = function(obj, string, count) { - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(_is_string(string), "we need a path"); - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; + var results = this.nodes(obj, string, count) + .map(function(r) { return r.value }); - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwErrorTolerant({}, Messages.InvalidLHSInForIn); - } + return results; +}; - lex(); - left = init; - right = parseExpression(); - init = null; - } - } +JSONPath.prototype.paths = function(obj, string, count) { - if (typeof left === 'undefined') { - expect(';'); - } - } + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - if (typeof left === 'undefined') { + var results = this.nodes(obj, string, count) + .map(function(r) { return r.path }); - if (!match(';')) { - test = parseExpression(); - } - expect(';'); + return results; +}; - if (!match(')')) { - update = parseExpression(); - } - } +JSONPath.prototype.nodes = function(obj, string, count) { - expect(')'); + assert.ok(obj instanceof Object, "obj needs to be an object"); + assert.ok(string, "we need a path"); - oldInIteration = state.inIteration; - state.inIteration = true; + if (count === 0) return []; - body = parseStatement(); + var path = this.parser.parse(string); + var handlers = this.handlers; - state.inIteration = oldInIteration; + var partials = [ { path: ['$'], value: obj } ]; + var matches = []; - return (typeof left === 'undefined') ? - delegate.createForStatement(init, test, update, body) : - delegate.createForInStatement(left, right, body); - } + if (path.length && path[0].expression.type == 'root') path.shift(); - // 12.7 The continue statement + if (!path.length) return partials; - function parseContinueStatement() { - var label = null, key; + path.forEach(function(component, index) { - expectKeyword('continue'); + if (matches.length >= count) return; + var handler = handlers.resolve(component); + var _partials = []; - // Optimize the most common form: 'continue;'. - if (source.charCodeAt(index) === 0x3B) { - lex(); + partials.forEach(function(p) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + if (matches.length >= count) return; + var results = handler(component, p, count); - return delegate.createContinueStatement(null); - } + if (index == path.length - 1) { + // if we're through the components we're done + matches = matches.concat(results || []); + } else { + // otherwise accumulate and carry on through + _partials = _partials.concat(results || []); + } + }); - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + partials = _partials; - return delegate.createContinueStatement(null); - } + }); - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); + return count ? matches.slice(0, count) : matches; +}; - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } +JSONPath.prototype.stringify = function(path) { - consumeSemicolon(); + assert.ok(path, "we need a path"); - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } + var string = '$'; - return delegate.createContinueStatement(label); - } + var templates = { + 'descendant-member': '..{{value}}', + 'child-member': '.{{value}}', + 'descendant-subscript': '..[{{value}}]', + 'child-subscript': '[{{value}}]' + }; - // 12.8 The break statement + path = this._normalize(path); - function parseBreakStatement() { - var label = null, key; + path.forEach(function(component) { - expectKeyword('break'); + if (component.expression.type == 'root') return; - // Catch the very common case first: immediately a semicolon (U+003B). - if (source.charCodeAt(index) === 0x3B) { - lex(); + var key = [component.scope, component.operation].join('-'); + var template = templates[key]; + var value; - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } + if (component.expression.type == 'string_literal') { + value = JSON.stringify(component.expression.value) + } else { + value = component.expression.value; + } - return delegate.createBreakStatement(null); - } + if (!template) throw new Error("couldn't find template " + key); - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } + string += template.replace(/{{value}}/, value); + }); - return delegate.createBreakStatement(null); - } + return string; +} - if (lookahead.type === Token.Identifier) { - label = parseVariableIdentifier(); +JSONPath.prototype._normalize = function(path) { - key = '$' + label.name; - if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } + assert.ok(path, "we need a path"); - consumeSemicolon(); + if (typeof path == "string") { - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } + return this.parser.parse(path); - return delegate.createBreakStatement(label); - } + } else if (Array.isArray(path) && typeof path[0] == "string") { - // 12.9 The return statement + var _path = [ { expression: { type: "root", value: "$" } } ]; - function parseReturnStatement() { - var argument = null; + path.forEach(function(component, index) { - expectKeyword('return'); + if (component == '$' && index === 0) return; - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } + if (typeof component == "string" && component.match("^" + dict.identifier + "$")) { - // 'return' followed by a space and an identifier is very common. - if (source.charCodeAt(index) === 0x20) { - if (isIdentifierStart(source.charCodeAt(index + 1))) { - argument = parseExpression(); - consumeSemicolon(); - return delegate.createReturnStatement(argument); - } - } + _path.push({ + operation: 'member', + scope: 'child', + expression: { value: component, type: 'identifier' } + }); - if (peekLineTerminator()) { - return delegate.createReturnStatement(null); - } + } else { - if (!match(';')) { - if (!match('}') && lookahead.type !== Token.EOF) { - argument = parseExpression(); - } - } + var type = typeof component == "number" ? + 'numeric_literal' : 'string_literal'; - consumeSemicolon(); + _path.push({ + operation: 'subscript', + scope: 'child', + expression: { value: component, type: type } + }); + } + }); - return delegate.createReturnStatement(argument); - } + return _path; - // 12.10 The with statement + } else if (Array.isArray(path) && typeof path[0] == "object") { - function parseWithStatement() { - var object, body; + return path + } - if (strict) { - // TODO(ikarienator): Should we update the test cases instead? - skipComment(); - throwErrorTolerant({}, Messages.StrictModeWith); - } + throw new Error("couldn't understand path " + path); +} - expectKeyword('with'); +function _is_string(obj) { + return Object.prototype.toString.call(obj) == '[object String]'; +} - expect('('); +JSONPath.Handlers = Handlers; +JSONPath.Parser = Parser; - object = parseExpression(); +var instance = new JSONPath; +instance.JSONPath = JSONPath; - expect(')'); +module.exports = instance; - body = parseStatement(); +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/index.js","/node_modules/jsonpath/lib") +},{"./dict":96,"./handlers":98,"./parser":100,"assert":51,"buffer":57,"lYpoI2":59}],100:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +var grammar = require('./grammar'); +var gparser = require('../generated/parser'); - return delegate.createWithStatement(object, body); - } +var Parser = function() { - // 12.10 The swith statement + var parser = new gparser.Parser(); - function parseSwitchCase() { - var test, consequent = [], statement, startToken; + var _parseError = parser.parseError; + parser.yy.parseError = function() { + if (parser.yy.ast) { + parser.yy.ast.initialize(); + } + _parseError.apply(parser, arguments); + } - startToken = lookahead; - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); + return parser; - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - consequent.push(statement); - } +}; - return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken); - } +Parser.grammar = grammar; +module.exports = Parser; - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/parser.js","/node_modules/jsonpath/lib") +},{"../generated/parser":94,"./grammar":97,"buffer":57,"lYpoI2":59}],101:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +module.exports = function(arr, start, end, step) { - expectKeyword('switch'); + if (typeof start == 'string') throw new Error("start cannot be a string"); + if (typeof end == 'string') throw new Error("end cannot be a string"); + if (typeof step == 'string') throw new Error("step cannot be a string"); - expect('('); + var len = arr.length; - discriminant = parseExpression(); + if (step === 0) throw new Error("step cannot be zero"); + step = step ? integer(step) : 1; - expect(')'); + // normalize negative values + start = start < 0 ? len + start : start; + end = end < 0 ? len + end : end; - expect('{'); + // default extents to extents + start = integer(start === 0 ? 0 : !start ? (step > 0 ? 0 : len - 1) : start); + end = integer(end === 0 ? 0 : !end ? (step > 0 ? len : -1) : end); - cases = []; + // clamp extents + start = step > 0 ? Math.max(0, start) : Math.min(len, start); + end = step > 0 ? Math.min(end, len) : Math.max(-1, end); - if (match('}')) { - lex(); - return delegate.createSwitchStatement(discriminant, cases); - } + // return empty if extents are backwards + if (step > 0 && end <= start) return []; + if (step < 0 && start <= end) return []; - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; + var result = []; - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); - } - defaultFound = true; - } - cases.push(clause); - } + for (var i = start; i != end; i += step) { + if ((step < 0 && i <= end) || (step > 0 && i >= end)) break; + result.push(arr[i]); + } - state.inSwitch = oldInSwitch; + return result; +} - expect('}'); +function integer(val) { + return String(val).match(/^[0-9]+$/) ? parseInt(val) : + Number.isFinite(val) ? parseInt(val, 10) : 0; +} - return delegate.createSwitchStatement(discriminant, cases); - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/slice.js","/node_modules/jsonpath/lib") +},{"buffer":57,"lYpoI2":59}],102:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +// Underscore.js 1.7.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. - // 12.13 The throw statement +(function() { - function parseThrowStatement() { - var argument; + // Baseline setup + // -------------- - expectKeyword('throw'); + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } + // Save the previous value of the `_` variable. + var previousUnderscore = root._; - argument = parseExpression(); + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - consumeSemicolon(); + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; - return delegate.createThrowStatement(argument); + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; } + exports._ = _; + } else { + root._ = _; + } - // 12.14 The try statement + // Current version. + _.VERSION = '1.7.0'; - function parseCatchClause() { - var param, body, startToken; + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var createCallback = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; - startToken = lookahead; - expectKeyword('catch'); + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + _.iteratee = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return createCallback(value, context, argCount); + if (_.isObject(value)) return _.matches(value); + return _.property(value); + }; - expect('('); - if (match(')')) { - throwUnexpected(lookahead); - } + // Collection Functions + // -------------------- - param = parseVariableIdentifier(); - // 12.14.1 - if (strict && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + if (obj == null) return obj; + iteratee = createCallback(iteratee, context); + var i, length = obj.length; + if (length === +length) { + for (i = 0; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; - expect(')'); - body = parseBlock(); - return delegate.markEnd(delegate.createCatchClause(param, body), startToken); + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + if (obj == null) return []; + iteratee = _.iteratee(iteratee, context); + var keys = obj.length !== +obj.length && _.keys(obj), + length = (keys || obj).length, + results = Array(length), + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); } + return results; + }; - function parseTryStatement() { - var block, handlers = [], finalizer = null; + var reduceError = 'Reduce of empty array with no initial value'; - expectKeyword('try'); + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = function(obj, iteratee, memo, context) { + if (obj == null) obj = []; + iteratee = createCallback(iteratee, context, 4); + var keys = obj.length !== +obj.length && _.keys(obj), + length = (keys || obj).length, + index = 0, currentKey; + if (arguments.length < 3) { + if (!length) throw new TypeError(reduceError); + memo = obj[keys ? keys[index++] : index++]; + } + for (; index < length; index++) { + currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; - block = parseBlock(); + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = function(obj, iteratee, memo, context) { + if (obj == null) obj = []; + iteratee = createCallback(iteratee, context, 4); + var keys = obj.length !== + obj.length && _.keys(obj), + index = (keys || obj).length, + currentKey; + if (arguments.length < 3) { + if (!index) throw new TypeError(reduceError); + memo = obj[keys ? keys[--index] : --index]; + } + while (index--) { + currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var result; + predicate = _.iteratee(predicate, context); + _.some(obj, function(value, index, list) { + if (predicate(value, index, list)) { + result = value; + return true; + } + }); + return result; + }; - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + if (obj == null) return results; + predicate = _.iteratee(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(_.iteratee(predicate)), context); + }; - return delegate.createTryStatement(block, [], handlers, finalizer); + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + if (obj == null) return true; + predicate = _.iteratee(predicate, context); + var keys = obj.length !== +obj.length && _.keys(obj), + length = (keys || obj).length, + index, currentKey; + for (index = 0; index < length; index++) { + currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; } + return true; + }; - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return delegate.createDebuggerStatement(); + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + if (obj == null) return false; + predicate = _.iteratee(predicate, context); + var keys = obj.length !== +obj.length && _.keys(obj), + length = (keys || obj).length, + index, currentKey; + for (index = 0; index < length; index++) { + currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; } + return false; + }; - // 12 Statements + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (obj.length !== +obj.length) obj = _.values(obj); + return _.indexOf(obj, target) >= 0; + }; - function parseStatement() { - var type = lookahead.type, - expr, - labeledBody, - key, - startToken; + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; - if (type === Token.EOF) { - throwUnexpected(lookahead); - } + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; - if (type === Token.Punctuator && lookahead.value === '{') { - return parseBlock(); - } + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matches(attrs)); + }; - startToken = lookahead; + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matches(attrs)); + }; - if (type === Token.Punctuator) { - switch (lookahead.value) { - case ';': - return delegate.markEnd(parseEmptyStatement(), startToken); - case '(': - return delegate.markEnd(parseExpressionStatement(), startToken); - default: - break; - } + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = obj.length === +obj.length ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; } - - if (type === Token.Keyword) { - switch (lookahead.value) { - case 'break': - return delegate.markEnd(parseBreakStatement(), startToken); - case 'continue': - return delegate.markEnd(parseContinueStatement(), startToken); - case 'debugger': - return delegate.markEnd(parseDebuggerStatement(), startToken); - case 'do': - return delegate.markEnd(parseDoWhileStatement(), startToken); - case 'for': - return delegate.markEnd(parseForStatement(), startToken); - case 'function': - return delegate.markEnd(parseFunctionDeclaration(), startToken); - case 'if': - return delegate.markEnd(parseIfStatement(), startToken); - case 'return': - return delegate.markEnd(parseReturnStatement(), startToken); - case 'switch': - return delegate.markEnd(parseSwitchStatement(), startToken); - case 'throw': - return delegate.markEnd(parseThrowStatement(), startToken); - case 'try': - return delegate.markEnd(parseTryStatement(), startToken); - case 'var': - return delegate.markEnd(parseVariableStatement(), startToken); - case 'while': - return delegate.markEnd(parseWhileStatement(), startToken); - case 'with': - return delegate.markEnd(parseWithStatement(), startToken); - default: - break; - } + } + } else { + iteratee = _.iteratee(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; } + }); + } + return result; + }; - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - key = '$' + expr.name; - if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[key] = true; - labeledBody = parseStatement(); - delete state.labelSet[key]; - return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken); + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = obj.length === +obj.length ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = _.iteratee(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; } + }); + } + return result; + }; - consumeSemicolon(); + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = obj && obj.length === +obj.length ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; - return delegate.markEnd(delegate.createExpressionStatement(expr), startToken); + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (obj.length !== +obj.length) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; - // 13 Function Definition + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = _.iteratee(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken; + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = _.iteratee(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; - startToken = lookahead; - expect('{'); + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); - while (index < length) { - if (lookahead.type !== Token.StringLiteral) { - break; - } - token = lookahead; + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.start + 1, token.end - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = _.iteratee(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = array.length; + while (low < high) { + var mid = low + high >>> 1; + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return obj.length === +obj.length ? obj.length : _.keys(obj).length; + }; - expect('}'); + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = _.iteratee(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; + // Array Functions + // --------------- - return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken); - } + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + if (n < 0) return []; + return slice.call(array, 0, n); + }; - function parseParams(firstRestricted) { - var param, params = [], token, stricted, paramSet, key, message; - expect('('); + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead; - param = parseVariableIdentifier(); - key = '$' + token.value; - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[key] = true; - if (match(')')) { - break; - } - expect(','); - } - } + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return slice.call(array, Math.max(array.length - n, 0)); + }; - expect(')'); + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; - return { - params: params, - stricted: stricted, - firstRestricted: firstRestricted, - message: message - }; - } + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; - function parseFunctionDeclaration() { - var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken; + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, output) { + if (shallow && _.every(input, _.isArray)) { + return concat.apply(output, input); + } + for (var i = 0, length = input.length; i < length; i++) { + var value = input[i]; + if (!_.isArray(value) && !_.isArguments(value)) { + if (!strict) output.push(value); + } else if (shallow) { + push.apply(output, value); + } else { + flatten(value, shallow, strict, output); + } + } + return output; + }; - startToken = lookahead; + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false, []); + }; - expectKeyword('function'); - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (array == null) return []; + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = _.iteratee(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = array.length; i < length; i++) { + var value = array[i]; + if (isSorted) { + if (!i || seen !== value) result.push(value); + seen = value; + } else if (iteratee) { + var computed = iteratee(value, i, array); + if (_.indexOf(seen, computed) < 0) { + seen.push(computed); + result.push(value); } + } else if (_.indexOf(result, value) < 0) { + result.push(value); + } + } + return result; + }; - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true, [])); + }; - return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken); + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + if (array == null) return []; + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = array.length; i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); } + return result; + }; - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken; - - startToken = lookahead; - expectKeyword('function'); + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(slice.call(arguments, 1), true, true, []); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; - if (!match('(')) { - token = lookahead; - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function(array) { + if (array == null) return []; + var length = _.max(arguments, 'length').length; + var results = Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(arguments, i); + } + return results; + }; - tmp = parseParams(firstRestricted); - params = tmp.params; - stricted = tmp.stricted; - firstRestricted = tmp.firstRestricted; - if (tmp.message) { - message = tmp.message; - } + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, length = list.length; i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, length = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted; + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + for (; i < length; i++) if (array[i] === item) return i; + return -1; + }; - return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken); + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var idx = array.length; + if (typeof from == 'number') { + idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1); } + while (--idx >= 0) if (array[idx] === item) return idx; + return -1; + }; - // 14 Program + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = step || 1; - function parseSourceElement() { - if (lookahead.type === Token.Keyword) { - switch (lookahead.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(lookahead.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); - if (lookahead.type !== Token.EOF) { - return parseStatement(); - } + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; } - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; + return range; + }; - while (index < length) { - token = lookahead; - if (token.type !== Token.StringLiteral) { - break; - } + // Function (ahem) Functions + // ------------------ - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = source.slice(token.start + 1, token.end - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } + // Reusable constructor function for prototype setting. + var Ctor = function(){}; - while (index < length) { - sourceElement = parseSourceElement(); - /* istanbul ignore if */ - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + var args, bound; + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + args = slice.call(arguments, 2); + bound = function() { + if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); + Ctor.prototype = func.prototype; + var self = new Ctor; + Ctor.prototype = null; + var result = func.apply(self, args.concat(slice.call(arguments))); + if (_.isObject(result)) return result; + return self; + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + return function() { + var position = 0; + var args = boundArgs.slice(); + for (var i = 0, length = args.length; i < length; i++) { + if (args[i] === _) args[i] = arguments[position++]; + } + while (position < arguments.length) args.push(arguments[position++]); + return func.apply(this, args); + }; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); } + return obj; + }; - function parseProgram() { - var body, startToken; + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = hasher ? hasher.apply(this, arguments) : key; + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; - skipComment(); - peek(); - startToken = lookahead; - strict = false; + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; - body = parseSourceElements(); - return delegate.markEnd(delegate.createProgram(body), startToken); - } + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; - function filterTokenLocation() { - var i, entry, token, tokens = []; + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; - } - tokens.push(token); + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last > 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; } + } + }; - extra.tokens = tokens; - } + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } - function tokenize(code, options) { - var toString, - token, - tokens; + return result; + }; + }; - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1 - }; + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; - extra = {}; + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; - // Options matching. - options = options || {}; + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; - // Of course we collect tokens here. - options.tokens = true; - extra.tokens = []; - extra.tokenize = true; - // The following two fields are necessary to compute the Regex tokens. - extra.openParenToken = -1; - extra.openCurlyToken = -1; + // Returns a function that will only be executed before being called N times. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } else { + func = null; + } + return memo; + }; + }; - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } + // Object Functions + // ---------------- - try { - peek(); - if (lookahead.type === Token.EOF) { - return extra.tokens; - } + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + return keys; + }; - token = lex(); - while (lookahead.type !== Token.EOF) { - try { - token = lex(); - } catch (lexError) { - token = lookahead; - if (extra.errors) { - extra.errors.push(lexError); - // We have to break on the first error - // to avoid infinite loops. - break; - } else { - throw lexError; - } - } - } + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; - filterTokenLocation(); - tokens = extra.tokens; - if (typeof extra.comments !== 'undefined') { - tokens.comments = extra.comments; - } - if (typeof extra.errors !== 'undefined') { - tokens.errors = extra.errors; - } - } catch (e) { - throw e; - } finally { - extra = {}; - } - return tokens; + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; } + return pairs; + }; - function parse(code, options) { - var program, toString; + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + if (!_.isObject(obj)) return obj; + var source, prop; + for (var i = 1, length = arguments.length; i < length; i++) { + source = arguments[i]; + for (prop in source) { + if (hasOwnProperty.call(source, prop)) { + obj[prop] = source[prop]; } + } + } + return obj; + }; - delegate = SyntaxTreeDelegate; - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - lookahead = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false, - lastCommentStart: -1 - }; + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj, iteratee, context) { + var result = {}, key; + if (obj == null) return result; + if (_.isFunction(iteratee)) { + iteratee = createCallback(iteratee, context); + for (key in obj) { + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + } else { + var keys = concat.apply([], slice.call(arguments, 1)); + obj = new Object(obj); + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (key in obj) result[key] = obj[key]; + } + } + return result; + }; - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(concat.apply([], slice.call(arguments, 1)), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; - if (extra.loc && options.source !== null && options.source !== undefined) { - extra.source = toString(options.source); - } + // Fill in a given object with default properties. + _.defaults = function(obj) { + if (!_.isObject(obj)) return obj; + for (var i = 1, length = arguments.length; i < length; i++) { + var source = arguments[i]; + for (var prop in source) { + if (obj[prop] === void 0) obj[prop] = source[prop]; + } + } + return obj; + }; - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - if (extra.attachComment) { - extra.range = true; - extra.comments = []; - extra.bottomRightStack = []; - extra.trailingComments = []; - extra.leadingComments = []; - } - } + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - } catch (e) { - throw e; - } finally { - extra = {}; + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if ( + aCtor !== bCtor && + // Handle Object.create(x) cases + 'constructor' in a && 'constructor' in b && + !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + ) { + return false; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size, result; + // Recursively compare objects and arrays. + if (className === '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size === b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; } - - return program; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + size = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + result = _.keys(b).length === size; + if (result) { + while (size--) { + // Deep compare each member + key = keys[size]; + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; - // Sync with *.json manifests. - exports.version = '1.2.2'; + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; - exports.tokenize = tokenize; + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj) || _.isArguments(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; - exports.parse = parse; + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; - // Deep copy. - /* istanbul ignore next */ - exports.Syntax = (function () { - var name, types = {}; + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; - if (typeof Object.create === 'function') { - types = Object.create(null); - } + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } - return types; - }()); + // Optimize `isFunction` if appropriate. Work around an IE 11 bug. + if (typeof /./ !== 'function') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } -})); -/* vim: set sw=4 ts=4 et tw=80 : */ + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/aesprim-browser.js","/node_modules/jsonpath/generated") -},{"FWaASH":50,"buffer":52}],103:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/* parser generated by jison 0.4.13 */ -/* - Returns a Parser object of the following structure: + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; - Parser: { - yy: {} - } + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; - Parser.prototype: { - yy: {}, - trace: function(), - symbols_: {associative list: name ==> number}, - terminals_: {associative list: number ==> name}, - productions_: [...], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), - table: [...], - defaultActions: {...}, - parseError: function(str, hash), - parse: function(input), + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; - lexer: { - EOF: 1, - parseError: function(str, hash), - setInput: function(input), - input: function(), - unput: function(str), - more: function(), - less: function(n), - pastInput: function(), - upcomingInput: function(), - showPosition: function(), - test_match: function(regex_match_array, rule_index), - next: function(), - lex: function(), - begin: function(condition), - popState: function(), - _currentRules: function(), - topState: function(), - pushState: function(condition), + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; - options: { - ranges: boolean (optional: true ==> token location info will include a .range[] member) - flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) - backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) - }, + // Utility Functions + // ----------------- - performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), - rules: [...], - conditions: {associative list: name ==> set}, - } - } + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; - token location info (@$, _$, etc.): { - first_line: n, - last_line: n, - first_column: n, - last_column: n, - range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) - } + _.constant = function(value) { + return function() { + return value; + }; + }; + _.noop = function(){}; - the parseError function receives a 'hash' object with these members for lexer and parser errors: { - text: (matched text) - token: (the produced terminal token, if any) - line: (yylineno) - } - while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { - loc: (yylloc) - expected: (string describing the set of expected tokens) - recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) - } -*/ -var parser = (function(){ -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"JSON_PATH":3,"DOLLAR":4,"PATH_COMPONENTS":5,"LEADING_CHILD_MEMBER_EXPRESSION":6,"PATH_COMPONENT":7,"MEMBER_COMPONENT":8,"SUBSCRIPT_COMPONENT":9,"CHILD_MEMBER_COMPONENT":10,"DESCENDANT_MEMBER_COMPONENT":11,"DOT":12,"MEMBER_EXPRESSION":13,"DOT_DOT":14,"STAR":15,"IDENTIFIER":16,"SCRIPT_EXPRESSION":17,"INTEGER":18,"END":19,"CHILD_SUBSCRIPT_COMPONENT":20,"DESCENDANT_SUBSCRIPT_COMPONENT":21,"[":22,"SUBSCRIPT":23,"]":24,"SUBSCRIPT_EXPRESSION":25,"SUBSCRIPT_EXPRESSION_LIST":26,"SUBSCRIPT_EXPRESSION_LISTABLE":27,",":28,"STRING_LITERAL":29,"ARRAY_SLICE":30,"FILTER_EXPRESSION":31,"QQ_STRING":32,"Q_STRING":33,"$accept":0,"$end":1}, -terminals_: {2:"error",4:"DOLLAR",12:"DOT",14:"DOT_DOT",15:"STAR",16:"IDENTIFIER",17:"SCRIPT_EXPRESSION",18:"INTEGER",19:"END",22:"[",24:"]",28:",",30:"ARRAY_SLICE",31:"FILTER_EXPRESSION",32:"QQ_STRING",33:"Q_STRING"}, -productions_: [0,[3,1],[3,2],[3,1],[3,2],[5,1],[5,2],[7,1],[7,1],[8,1],[8,1],[10,2],[6,1],[11,2],[13,1],[13,1],[13,1],[13,1],[13,1],[9,1],[9,1],[20,3],[21,4],[23,1],[23,1],[26,1],[26,3],[27,1],[27,1],[27,1],[25,1],[25,1],[25,1],[29,1],[29,1]], -performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */ -/**/) { -/* this == yyval */ -if (!yy.ast) { - yy.ast = _ast; - _ast.initialize(); -} + _.property = function(key) { + return function(obj) { + return obj[key]; + }; + }; -var $0 = $$.length - 1; -switch (yystate) { -case 1:yy.ast.set({ expression: { type: "root", value: $$[$0] } }); yy.ast.unshift(); return yy.ast.yield() -break; -case 2:yy.ast.set({ expression: { type: "root", value: $$[$0-1] } }); yy.ast.unshift(); return yy.ast.yield() -break; -case 3:yy.ast.unshift(); return yy.ast.yield() -break; -case 4:yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $$[$0-1] }}); yy.ast.unshift(); return yy.ast.yield() -break; -case 5: -break; -case 6: -break; -case 7:yy.ast.set({ operation: "member" }); yy.ast.push() -break; -case 8:yy.ast.set({ operation: "subscript" }); yy.ast.push() -break; -case 9:yy.ast.set({ scope: "child" }) -break; -case 10:yy.ast.set({ scope: "descendant" }) -break; -case 11: -break; -case 12:yy.ast.set({ scope: "child", operation: "member" }) -break; -case 13: -break; -case 14:yy.ast.set({ expression: { type: "wildcard", value: $$[$0] } }) -break; -case 15:yy.ast.set({ expression: { type: "identifier", value: $$[$0] } }) -break; -case 16:yy.ast.set({ expression: { type: "script_expression", value: $$[$0] } }) -break; -case 17:yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($$[$0]) } }) -break; -case 18: -break; -case 19:yy.ast.set({ scope: "child" }) -break; -case 20:yy.ast.set({ scope: "descendant" }) -break; -case 21: -break; -case 22: -break; -case 23: -break; -case 24:$$[$0].length > 1? yy.ast.set({ expression: { type: "union", value: $$[$0] } }) : this.$ = $$[$0] -break; -case 25:this.$ = [$$[$0]] -break; -case 26:this.$ = $$[$0-2].concat($$[$0]) -break; -case 27:this.$ = { expression: { type: "numeric_literal", value: parseInt($$[$0]) } }; yy.ast.set(this.$) -break; -case 28:this.$ = { expression: { type: "string_literal", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 29:this.$ = { expression: { type: "slice", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 30:this.$ = { expression: { type: "wildcard", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 31:this.$ = { expression: { type: "script_expression", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 32:this.$ = { expression: { type: "filter_expression", value: $$[$0] } }; yy.ast.set(this.$) -break; -case 33:this.$ = $$[$0] -break; -case 34:this.$ = $$[$0] -break; -} -}, -table: [{3:1,4:[1,2],6:3,13:4,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{1:[3]},{1:[2,1],5:10,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,3],5:21,7:11,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,12],12:[2,12],14:[2,12],22:[2,12]},{1:[2,14],12:[2,14],14:[2,14],22:[2,14]},{1:[2,15],12:[2,15],14:[2,15],22:[2,15]},{1:[2,16],12:[2,16],14:[2,16],22:[2,16]},{1:[2,17],12:[2,17],14:[2,17],22:[2,17]},{1:[2,18],12:[2,18],14:[2,18],22:[2,18]},{1:[2,2],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,5],12:[2,5],14:[2,5],22:[2,5]},{1:[2,7],12:[2,7],14:[2,7],22:[2,7]},{1:[2,8],12:[2,8],14:[2,8],22:[2,8]},{1:[2,9],12:[2,9],14:[2,9],22:[2,9]},{1:[2,10],12:[2,10],14:[2,10],22:[2,10]},{1:[2,19],12:[2,19],14:[2,19],22:[2,19]},{1:[2,20],12:[2,20],14:[2,20],22:[2,20]},{13:23,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9]},{13:24,15:[1,5],16:[1,6],17:[1,7],18:[1,8],19:[1,9],22:[1,25]},{15:[1,29],17:[1,30],18:[1,33],23:26,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{1:[2,4],7:22,8:12,9:13,10:14,11:15,12:[1,18],14:[1,19],20:16,21:17,22:[1,20]},{1:[2,6],12:[2,6],14:[2,6],22:[2,6]},{1:[2,11],12:[2,11],14:[2,11],22:[2,11]},{1:[2,13],12:[2,13],14:[2,13],22:[2,13]},{15:[1,29],17:[1,30],18:[1,33],23:38,25:27,26:28,27:32,29:34,30:[1,35],31:[1,31],32:[1,36],33:[1,37]},{24:[1,39]},{24:[2,23]},{24:[2,24],28:[1,40]},{24:[2,30]},{24:[2,31]},{24:[2,32]},{24:[2,25],28:[2,25]},{24:[2,27],28:[2,27]},{24:[2,28],28:[2,28]},{24:[2,29],28:[2,29]},{24:[2,33],28:[2,33]},{24:[2,34],28:[2,34]},{24:[1,41]},{1:[2,21],12:[2,21],14:[2,21],22:[2,21]},{18:[1,33],27:42,29:34,30:[1,35],32:[1,36],33:[1,37]},{1:[2,22],12:[2,22],14:[2,22],22:[2,22]},{24:[2,26],28:[2,26]}], -defaultActions: {27:[2,23],29:[2,30],30:[2,31],31:[2,32]}, -parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - throw new Error(str); - } -}, -parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - var args = lstack.slice.call(arguments, 1); - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == 'undefined') { - this.lexer.yylloc = {}; - } - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === 'function') { - this.parseError = this.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == 'undefined') { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === 'undefined' || !action.length || !action[0]) { - var errStr = ''; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push('\'' + this.terminals_[p] + '\''); - } - } - if (this.lexer.showPosition) { - errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; - } else { - errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); - } - this.parseError(errStr, { - text: this.lexer.match, - token: this.terminals_[symbol] || symbol, - line: this.lexer.yylineno, - loc: yyloc, - expected: expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - this.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r !== 'undefined') { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } + // Returns a predicate for checking whether an object has a given set of `key:value` pairs. + _.matches = function(attrs) { + var pairs = _.pairs(attrs), length = pairs.length; + return function(obj) { + if (obj == null) return !length; + obj = new Object(obj); + for (var i = 0; i < length; i++) { + var pair = pairs[i], key = pair[0]; + if (pair[1] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = createCallback(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; } - return true; -}}; -var _ast = { + return min + Math.floor(Math.random() * (max - min + 1)); + }; - initialize: function() { - this._nodes = []; - this._node = {}; - this._stash = []; - }, + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; - set: function(props) { - for (var k in props) this._node[k] = props[k]; - return this._node; - }, + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); - node: function(obj) { - if (arguments.length) this._node = obj; - return this._node; - }, + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property) { + if (object == null) return void 0; + var value = object[property]; + return _.isFunction(value) ? object[property]() : value; + }; - push: function() { - this._nodes.push(this._node); - this._node = {}; - }, + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; - unshift: function() { - this._nodes.unshift(this._node); - this._node = {}; - }, + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; - yield: function() { - var _nodes = this._nodes; - this.initialize(); - return _nodes; - } -}; -/* generated by jison-lex 0.2.1 */ -var lexer = (function(){ -var lexer = { + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; -EOF:1, + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; -parseError:function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; -// resets the lexer, sets new input -setInput:function (input) { - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0,0]; - } - this.offset = 0; - return this; - }, + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; -// consumes and returns one char from the input -input:function () { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } - this._input = this._input.slice(1); - return ch; - }, + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; -// unshifts one char (or a string) into the input -unput:function (ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); - //this.yyleng -= len; - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r = this.yylloc.range; + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? - (lines.length === oldLines.length ? this.yylloc.first_column : 0) - + oldLines[oldLines.length - lines.length].length - lines[0].length : - this.yylloc.first_column - len - }; + var template = function(data) { + return render.call(this, data, _); + }; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; -// When called from action, caches matched text and appends it on next action -more:function () { - this._more = true; - return this; - }, + return template; + }; -// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. -reject:function () { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; - } - return this; - }, + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. -// retain first n characters of the match -less:function (n) { - this.unput(this.match.slice(n)); - }, + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; -// displays already matched input, i.e. for error messages -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; -// displays upcoming input, i.e. for error messages -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); - }, + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); -// displays the character position where the lexing error occurred, i.e. for error messages -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); -// test the lexed token: return FALSE when not a match, otherwise return token -test_match:function (match, indexed_rule) { - var token, - lines, - backup; + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); - if (this.options.backtrack_lexer) { - // save context - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? - lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : - this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token) { - return token; - } else if (this._backtrack) { - // recover context - for (var k in backup) { - this[k] = backup[k]; - } - return false; // rule action called reject() implying the next rule should be tested instead. - } - return false; - }, + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); -// return next match in input -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } +}).call(this,require("lYpoI2"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/node_modules/underscore/underscore.js","/node_modules/jsonpath/node_modules/underscore") +},{"buffer":57,"lYpoI2":59}],103:[function(require,module,exports){ +(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { - var token, - match, - tempMatch, - index; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (this.options.backtrack_lexer) { - token = this.test_match(tempMatch, rules[i]); - if (token !== false) { - return token; - } else if (this._backtrack) { - match = false; - continue; // rule action called reject() implying a rule MISmatch. - } else { - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match) { - token = this.test_match(match, rules[index]); - if (token !== false) { - return token; - } - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; -// return next match that has a token -lex:function lex() { - var r = this.next(); - if (r) { - return r; - } else { - return this.lex(); - } - }, + /** Used as the semantic version number. */ + var VERSION = '4.17.21'; -// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) -begin:function begin(condition) { - this.conditionStack.push(condition); - }, + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; -// pop the previously active lexer condition state off the condition stack -popState:function popState() { - var n = this.conditionStack.length - 1; - if (n > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; -// produce the lexer rule set which is active for the currently active lexer condition state -_currentRules:function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; -// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available -topState:function topState(n) { - n = this.conditionStack.length - 1 - Math.abs(n || 0); - if (n >= 0) { - return this.conditionStack[n]; - } else { - return "INITIAL"; - } - }, + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; -// alias for begin(condition) -pushState:function pushState(condition) { - this.begin(condition); - }, + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; -// return the number of states currently on the stack -stateStackSize:function stateStackSize() { - return this.conditionStack.length; - }, -options: {}, -performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START -/**/) { + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; -var YYSTATE=YY_START; -switch($avoiding_name_collisions) { -case 0:return 4 -break; -case 1:return 14 -break; -case 2:return 12 -break; -case 3:return 15 -break; -case 4:return 16 -break; -case 5:return 22 -break; -case 6:return 24 -break; -case 7:return 28 -break; -case 8:return 30 -break; -case 9:return 18 -break; -case 10:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 32; -break; -case 11:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 33; -break; -case 12:return 17 -break; -case 13:return 31 -break; -} -}, -rules: [/^(?:\$)/,/^(?:\.\.)/,/^(?:\.)/,/^(?:\*)/,/^(?:[a-zA-Z_]+[a-zA-Z0-9_]*)/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?:((-?(?:0|[1-9][0-9]*)))?\:((-?(?:0|[1-9][0-9]*)))?(\:((-?(?:0|[1-9][0-9]*)))?)?)/,/^(?:(-?(?:0|[1-9][0-9]*)))/,/^(?:"(?:\\["bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^"\\])*")/,/^(?:'(?:\\['bfnrt/\\]|\\u[a-fA-F0-9]{4}|[^'\\])*')/,/^(?:\(.+?\)(?=\]))/,/^(?:\?\(.+?\)(?=\]))/], -conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}} -}; -return lexer; -})(); -parser.lexer = lexer; -function Parser () { - this.yy = {}; -} -Parser.prototype = parser;parser.Parser = Parser; -return new Parser; -})(); + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { -exports.parser = parser; -exports.Parser = parser.Parser; -exports.parse = function () { return parser.parse.apply(parser, arguments); }; -exports.main = function commonjsMain(args) { - if (!args[1]) { - console.log('Usage: '+args[0]+' FILE'); - process.exit(1); - } - var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); - return exports.parser.parse(source); -}; -if (typeof module !== 'undefined' && require.main === module) { - exports.main(process.argv.slice(1)); -} -} + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/generated/parser.js","/node_modules/jsonpath/generated") -},{"FWaASH":50,"buffer":52,"fs":49,"path":114}],104:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = require('./lib/index'); + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/index.js","/node_modules/jsonpath") -},{"./lib/index":108,"FWaASH":50,"buffer":52}],105:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = { - identifier: "[a-zA-Z_]+[a-zA-Z0-9_]*", - integer: "-?(?:0|[1-9][0-9]*)", - qq_string: "\"(?:\\\\[\"bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\"\\\\])*\"", - q_string: "'(?:\\\\[\'bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\'\\\\])*'" -}; + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/dict.js","/node_modules/jsonpath/lib") -},{"FWaASH":50,"buffer":52}],106:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var dict = require('./dict'); -var fs = require('fs'); -var grammar = { + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; - lex: { + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - macros: { - esc: "\\\\", - int: dict.integer - }, + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - rules: [ - ["\\$", "return 'DOLLAR'"], - ["\\.\\.", "return 'DOT_DOT'"], - ["\\.", "return 'DOT'"], - ["\\*", "return 'STAR'"], - [dict.identifier, "return 'IDENTIFIER'"], - ["\\[", "return '['"], - ["\\]", "return ']'"], - [",", "return ','"], - ["({int})?\\:({int})?(\\:({int})?)?", "return 'ARRAY_SLICE'"], - ["{int}", "return 'INTEGER'"], - [dict.qq_string, "yytext = yytext.substr(1,yyleng-2); return 'QQ_STRING';"], - [dict.q_string, "yytext = yytext.substr(1,yyleng-2); return 'Q_STRING';"], - ["\\(.+?\\)(?=\\])", "return 'SCRIPT_EXPRESSION'"], - ["\\?\\(.+?\\)(?=\\])", "return 'FILTER_EXPRESSION'"] - ] - }, + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - start: "JSON_PATH", + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; - bnf: { + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - JSON_PATH: [ - [ 'DOLLAR', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], - [ 'DOLLAR PATH_COMPONENTS', 'yy.ast.set({ expression: { type: "root", value: $1 } }); yy.ast.unshift(); return yy.ast.yield()' ], - [ 'LEADING_CHILD_MEMBER_EXPRESSION', 'yy.ast.unshift(); return yy.ast.yield()' ], - [ 'LEADING_CHILD_MEMBER_EXPRESSION PATH_COMPONENTS', 'yy.ast.set({ operation: "member", scope: "child", expression: { type: "identifier", value: $1 }}); yy.ast.unshift(); return yy.ast.yield()' ] ], + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); - PATH_COMPONENTS: [ - [ 'PATH_COMPONENT', '' ], - [ 'PATH_COMPONENTS PATH_COMPONENT', '' ] ], + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; - PATH_COMPONENT: [ - [ 'MEMBER_COMPONENT', 'yy.ast.set({ operation: "member" }); yy.ast.push()' ], - [ 'SUBSCRIPT_COMPONENT', 'yy.ast.set({ operation: "subscript" }); yy.ast.push() ' ] ], + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; - MEMBER_COMPONENT: [ - [ 'CHILD_MEMBER_COMPONENT', 'yy.ast.set({ scope: "child" })' ], - [ 'DESCENDANT_MEMBER_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; - CHILD_MEMBER_COMPONENT: [ - [ 'DOT MEMBER_EXPRESSION', '' ] ], + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - LEADING_CHILD_MEMBER_EXPRESSION: [ - [ 'MEMBER_EXPRESSION', 'yy.ast.set({ scope: "child", operation: "member" })' ] ], + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; - DESCENDANT_MEMBER_COMPONENT: [ - [ 'DOT_DOT MEMBER_EXPRESSION', '' ] ], + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; - MEMBER_EXPRESSION: [ - [ 'STAR', 'yy.ast.set({ expression: { type: "wildcard", value: $1 } })' ], - [ 'IDENTIFIER', 'yy.ast.set({ expression: { type: "identifier", value: $1 } })' ], - [ 'SCRIPT_EXPRESSION', 'yy.ast.set({ expression: { type: "script_expression", value: $1 } })' ], - [ 'INTEGER', 'yy.ast.set({ expression: { type: "numeric_literal", value: parseInt($1) } })' ], - [ 'END', '' ] ], + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - SUBSCRIPT_COMPONENT: [ - [ 'CHILD_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "child" })' ], - [ 'DESCENDANT_SUBSCRIPT_COMPONENT', 'yy.ast.set({ scope: "descendant" })' ] ], + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; - CHILD_SUBSCRIPT_COMPONENT: [ - [ '[ SUBSCRIPT ]', '' ] ], + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - DESCENDANT_SUBSCRIPT_COMPONENT: [ - [ 'DOT_DOT [ SUBSCRIPT ]', '' ] ], + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; - SUBSCRIPT: [ - [ 'SUBSCRIPT_EXPRESSION', '' ], - [ 'SUBSCRIPT_EXPRESSION_LIST', '$1.length > 1? yy.ast.set({ expression: { type: "union", value: $1 } }) : $$ = $1' ] ], + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; - SUBSCRIPT_EXPRESSION_LIST: [ - [ 'SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = [$1]'], - [ 'SUBSCRIPT_EXPRESSION_LIST , SUBSCRIPT_EXPRESSION_LISTABLE', '$$ = $1.concat($3)' ] ], + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; - SUBSCRIPT_EXPRESSION_LISTABLE: [ - [ 'INTEGER', '$$ = { expression: { type: "numeric_literal", value: parseInt($1) } }; yy.ast.set($$)' ], - [ 'STRING_LITERAL', '$$ = { expression: { type: "string_literal", value: $1 } }; yy.ast.set($$)' ], - [ 'ARRAY_SLICE', '$$ = { expression: { type: "slice", value: $1 } }; yy.ast.set($$)' ] ], + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; - SUBSCRIPT_EXPRESSION: [ - [ 'STAR', '$$ = { expression: { type: "wildcard", value: $1 } }; yy.ast.set($$)' ], - [ 'SCRIPT_EXPRESSION', '$$ = { expression: { type: "script_expression", value: $1 } }; yy.ast.set($$)' ], - [ 'FILTER_EXPRESSION', '$$ = { expression: { type: "filter_expression", value: $1 } }; yy.ast.set($$)' ] ], + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - STRING_LITERAL: [ - [ 'QQ_STRING', "$$ = $1" ], - [ 'Q_STRING', "$$ = $1" ] ] - } -}; -if (fs.readFileSync) { - grammar.moduleInclude = fs.readFileSync(require.resolve("../include/module.js")); - grammar.actionInclude = fs.readFileSync(require.resolve("../include/action.js")); -} + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; -module.exports = grammar; + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/grammar.js","/node_modules/jsonpath/lib") -},{"./dict":105,"FWaASH":50,"buffer":52,"fs":49}],107:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var aesprim = require('./aesprim'); -var slice = require('./slice'); -var _evaluate = require('static-eval'); -var _uniq = require('underscore').uniq; + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; -var Handlers = function() { - return this.initialize.apply(this, arguments); -} + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; -Handlers.prototype.initialize = function() { - this.traverse = traverser(true); - this.descend = traverser(); -} + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; -Handlers.prototype.keys = Object.keys; + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); -Handlers.prototype.resolve = function(component) { + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); - var key = [ component.operation, component.scope, component.expression.type ].join('-'); - var method = this._fns[key]; + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - if (!method) throw new Error("couldn't resolve key: " + key); - return method.bind(this); -}; + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); -Handlers.prototype.register = function(key, handler) { + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - if (!handler instanceof Function) { - throw new Error("handler must be a function"); - } + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - this._fns[key] = handler; -}; + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; -Handlers.prototype._fns = { + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; - 'member-child-identifier': function(component, partial) { - var key = component.expression.value; - var value = partial.value; - if (value instanceof Object && key in value) { - return [ { value: value[key], path: partial.path.concat(key) } ] - } - }, + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; - 'member-descendant-identifier': - _traverse(function(key, value, ref) { return key == ref }), + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; - 'subscript-child-numeric_literal': - _descend(function(key, value, ref) { return key === ref }), + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; - 'member-child-numeric_literal': - _descend(function(key, value, ref) { return String(key) === String(ref) }), + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; - 'subscript-descendant-numeric_literal': - _traverse(function(key, value, ref) { return key === ref }), + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; - 'member-child-wildcard': - _descend(function() { return true }), + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; - 'member-descendant-wildcard': - _traverse(function() { return true }), + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; - 'subscript-descendant-wildcard': - _traverse(function() { return true }), + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - 'subscript-child-wildcard': - _descend(function() { return true }), + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - 'subscript-child-slice': function(component, partial) { - if (is_array(partial.value)) { - var args = component.expression.value.split(':').map(_parse_nullable_int); - var values = partial.value.map(function(v, i) { return { value: v, path: partial.path.concat(i) } }); - return slice.apply(null, [values].concat(args)); - } - }, + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); - 'subscript-child-union': function(component, partial) { - var results = []; - component.expression.value.forEach(function(component) { - var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; - var handler = this.resolve(_component); - var _results = handler(_component, partial); - if (_results) { - results = results.concat(_results); - } - }, this); + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - return unique(results); - }, + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - 'subscript-descendant-union': function(component, partial, count) { + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; - var jp = require('..'); - var self = this; + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; - var results = []; - var nodes = jp.nodes(partial, '$..*').slice(1); + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; - nodes.forEach(function(node) { - if (results.length >= count) return; - component.expression.value.forEach(function(component) { - var _component = { operation: 'subscript', scope: 'child', expression: component.expression }; - var handler = self.resolve(_component); - var _results = handler(_component, node); - results = results.concat(_results); - }); - }); + if (types) { + return types; + } - return unique(results); - }, + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); - 'subscript-child-filter_expression': function(component, partial, count) { + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - // slice out the expression from ?(expression) - var src = component.expression.value.slice(2, -1); - var ast = aesprim.parse(src).body[0].expression; + /*--------------------------------------------------------------------------*/ - var passable = function(key, value) { - return evaluate(ast, { '@': value }); + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); } + return func.apply(thisArg, args); + } - return this.descend(partial, null, passable, count); - - }, + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; - 'subscript-descendant-filter_expression': function(component, partial, count) { + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } - // slice out the expression from ?(expression) - var src = component.expression.value.slice(2, -1); - var ast = aesprim.parse(src).body[0].expression; + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; - var passable = function(key, value) { - return evaluate(ast, { '@': value }); + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } } + return array; + } - return this.traverse(partial, null, passable, count); - }, + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; - 'subscript-child-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$[{{value}}]'); - }, + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } - 'member-child-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$.{{value}}'); - }, + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; - 'member-descendant-script_expression': function(component, partial) { - var exp = component.expression.value.slice(1, -1); - return eval_recurse(partial, exp, '$..value'); + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; } -}; -Handlers.prototype._fns['subscript-child-string_literal'] = - Handlers.prototype._fns['member-child-identifier']; + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; -Handlers.prototype._fns['member-descendant-numeric_literal'] = - Handlers.prototype._fns['subscript-descendant-string_literal'] = - Handlers.prototype._fns['member-descendant-identifier']; + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } -function eval_recurse(partial, src, template) { + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } - var jp = require('./index'); - var ast = aesprim.parse(src).body[0].expression; - var value = evaluate(ast, { '@': partial.value }); - var path = template.replace(/\{\{\s*value\s*\}\}/g, value); + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; - var results = jp.nodes(partial.value, path); - results.forEach(function(r) { - r.path = partial.path.concat(r.path.slice(1)); - }); + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } - return results; -} + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); -function is_array(val) { - return Array.isArray(val); -} + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } -function is_object(val) { - // is this a non-array, non-null object? - return val && !(val instanceof Array) && val instanceof Object; -} + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; -function traverser(recurse) { + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } - return function(partial, ref, passable, count) { + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; - var value = partial.value; - var path = partial.path; + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } - var results = []; + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } - var descend = function(value, path) { + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; - if (is_array(value)) { - value.forEach(function(element, index) { - if (results.length >= count) { return } - if (passable(index, element, ref)) { - results.push({ path: path.concat(index), value: element }); - } - }); - value.forEach(function(element, index) { - if (results.length >= count) { return } - if (recurse) { - descend(element, path.concat(index)); - } - }); - } else if (is_object(value)) { - this.keys(value).forEach(function(k) { - if (results.length >= count) { return } - if (passable(k, value[k], ref)) { - results.push({ path: path.concat(k), value: value[k] }); - } - }) - this.keys(value).forEach(function(k) { - if (results.length >= count) { return } - if (recurse) { - descend(value[k], path.concat(k)); - } - }); + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; } - }.bind(this); - descend(value, path); - return results; + } + return false; } -} -function _descend(passable) { - return function(component, partial, count) { - return this.descend(partial, component.expression.value, passable, count); - } -} + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); -function _traverse(passable) { - return function(component, partial, count) { - return this.traverse(partial, component.expression.value, passable, count); + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); } -} - -function evaluate() { - try { return _evaluate.apply(this, arguments) } - catch (e) { } -} -function unique(results) { - results = results.filter(function(d) { return d }) - return _uniq( - results, - function(r) { return r.path.map(function(c) { return String(c).replace('-', '--') }).join('-') } - ); -} + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } -function _parse_nullable_int(val) { - var sval = String(val); - return sval.match(/^-?[0-9]+$/) ? parseInt(sval) : null; -} + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } -module.exports = Handlers; + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/handlers.js","/node_modules/jsonpath/lib") -},{"..":108,"./aesprim":102,"./index":108,"./slice":110,"FWaASH":50,"buffer":52,"static-eval":119,"underscore":133}],108:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var assert = require('assert'); -var dict = require('./dict'); -var Parser = require('./parser'); -var Handlers = require('./handlers'); + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } -var JSONPath = function() { - this.initialize.apply(this, arguments); -}; + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } -JSONPath.prototype.initialize = function() { - this.parser = new Parser(); - this.handlers = new Handlers(); -}; + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; -JSONPath.prototype.parse = function(string) { - assert.ok(_is_string(string), "we need a path"); - return this.parser.parse(string); -}; + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } -JSONPath.prototype.parent = function(obj, string) { + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } - var node = this.nodes(obj, string)[0]; - var key = node.path.pop(); /* jshint unused:false */ - return this.value(obj, node.path); -} + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } -JSONPath.prototype.apply = function(obj, string, fn) { + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); - assert.equal(typeof fn, "function", "fn needs to be function") + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } - var nodes = this.nodes(obj, string).sort(function(a, b) { - // sort nodes so we apply from the bottom up - return b.path.length - a.path.length; - }); + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; - nodes.forEach(function(node) { - var key = node.path.pop(); - var parent = this.value(obj, this.stringify(node.path)); - var val = node.value = fn.call(obj, parent[key]); - parent[key] = val; - }, this); + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } - return nodes; -} + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; -JSONPath.prototype.value = function(obj, path, value) { + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(path, "we need a path"); + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - if (arguments.length >= 3) { - var node = this.nodes(obj, path).shift(); - if (!node) return this._vivify(obj, path, value); - var key = node.path.slice(-1).shift(); - var parent = this.parent(obj, this.stringify(node.path)); - parent[key] = value; + while (++index < n) { + result[index] = iteratee(index); + } + return result; } - return this.query(obj, this.stringify(path), 1).shift(); -} - -JSONPath.prototype._vivify = function(obj, string, value) { - var self = this; + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } - var path = this.parser.parse(string) - .map(function(component) { return component.expression.value }); + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } - var setValue = function(path, value) { - var key = path.pop(); - var node = self.value(obj, path); - if (!node) { - setValue(path.concat(), typeof key === 'string' ? {} : []); - node = self.value(obj, path); - } - node[key] = value; + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); } - setValue(path, value); - return this.query(obj, string)[0]; -} -JSONPath.prototype.query = function(obj, string, count) { + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(_is_string(string), "we need a path"); + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; - var results = this.nodes(obj, string, count) - .map(function(r) { return r.value }); + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } - return results; -}; + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; -JSONPath.prototype.paths = function(obj, string, count) { + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; - var results = this.nodes(obj, string, count) - .map(function(r) { return r.path }); + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } - return results; -}; + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); -JSONPath.prototype.nodes = function(obj, string, count) { + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); - assert.ok(obj instanceof Object, "obj needs to be an object"); - assert.ok(string, "we need a path"); + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } - if (count === 0) return []; + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } - var path = this.parser.parse(string); - var handlers = this.handlers; + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } - var partials = [ { path: ['$'], value: obj } ]; - var matches = []; + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } - if (path.length && path[0].expression.type == 'root') path.shift(); + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; - if (!path.length) return partials; + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } - path.forEach(function(component, index) { + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); - if (matches.length >= count) return; - var handler = handlers.resolve(component); - var _partials = []; + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } - partials.forEach(function(p) { + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } - if (matches.length >= count) return; - var results = handler(component, p, count); + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; - if (index == path.length - 1) { - // if we're through the components we're done - matches = matches.concat(results || []); - } else { - // otherwise accumulate and carry on through - _partials = _partials.concat(results || []); + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; } - }); + } + return result; + } - partials = _partials; + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); - }); + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } - return count ? matches.slice(0, count) : matches; -}; + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); -JSONPath.prototype.stringify = function(path) { + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } - assert.ok(path, "we need a path"); + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; - var string = '$'; + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } - var templates = { - 'descendant-member': '..{{value}}', - 'child-member': '.{{value}}', - 'descendant-subscript': '..[{{value}}]', - 'child-subscript': '[{{value}}]' - }; + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } - path = this._normalize(path); + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } - path.forEach(function(component) { + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } - if (component.expression.type == 'root') return; + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; - var key = [component.scope, component.operation].join('-'); - var template = templates[key]; - var value; + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } - if (component.expression.type == 'string_literal') { - value = JSON.stringify(component.expression.value) - } else { - value = component.expression.value; + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } - if (!template) throw new Error("couldn't find template " + key); + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } - string += template.replace(/{{value}}/, value); - }); + /*--------------------------------------------------------------------------*/ - return string; -} + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); -JSONPath.prototype._normalize = function(path) { + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; - assert.ok(path, "we need a path"); + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; - if (typeof path == "string") { + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; - return this.parser.parse(path); + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; - } else if (Array.isArray(path) && typeof path[0] == "string") { + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; - var _path = [ { expression: { type: "root", value: "$" } } ]; + /** Used to generate unique IDs. */ + var idCounter = 0; - path.forEach(function(component, index) { + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); - if (component == '$' && index === 0) return; + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; - if (typeof component == "string" && component.match("^" + dict.identifier + "$")) { + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); - _path.push({ - operation: 'member', - scope: 'child', - expression: { value: component, type: 'identifier' } - }); + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; - } else { + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); - var type = typeof component == "number" ? - 'numeric_literal' : 'string_literal'; + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; - _path.push({ - operation: 'subscript', - scope: 'child', - expression: { value: component, type: type } - }); - } - }); + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); - return _path; + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - } else if (Array.isArray(path) && typeof path[0] == "object") { + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; - return path - } + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); - throw new Error("couldn't understand path " + path); -} + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; -function _is_string(obj) { - return Object.prototype.toString.call(obj) == '[object String]'; -} + /** Used to lookup unminified function names. */ + var realNames = {}; -JSONPath.Handlers = Handlers; -JSONPath.Parser = Parser; + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); -var instance = new JSONPath; -instance.JSONPath = JSONPath; + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; -module.exports = instance; + /*------------------------------------------------------------------------*/ -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/index.js","/node_modules/jsonpath/lib") -},{"./dict":105,"./handlers":107,"./parser":109,"FWaASH":50,"assert":44,"buffer":52}],109:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -var grammar = require('./grammar'); -var gparser = require('../generated/parser'); + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } -var Parser = function() { + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); - var parser = new gparser.Parser(); + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } - var _parseError = parser.parseError; - parser.yy.parseError = function() { - if (parser.yy.ast) { - parser.yy.ast.initialize(); + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; } - _parseError.apply(parser, arguments); - } - return parser; + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { -}; + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, -Parser.grammar = grammar; -module.exports = Parser; + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/parser.js","/node_modules/jsonpath/lib") -},{"../generated/parser":103,"./grammar":106,"FWaASH":50,"buffer":52}],110:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -module.exports = function(arr, start, end, step) { + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, - if (typeof start == 'string') throw new Error("start cannot be a string"); - if (typeof end == 'string') throw new Error("end cannot be a string"); - if (typeof step == 'string') throw new Error("step cannot be a string"); + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', - var len = arr.length; + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { - if (step === 0) throw new Error("step cannot be zero"); - step = step ? integer(step) : 1; + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; - // normalize negative values - start = start < 0 ? len + start : start; - end = end < 0 ? len + end : end; + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; - // default extents to extents - start = integer(start === 0 ? 0 : !start ? (step > 0 ? 0 : len - 1) : start); - end = integer(end === 0 ? 0 : !end ? (step > 0 ? len : -1) : end); + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; - // clamp extents - start = step > 0 ? Math.max(0, start) : Math.min(len, start); - end = step > 0 ? Math.min(end, len) : Math.max(-1, end); + /*------------------------------------------------------------------------*/ - // return empty if extents are backwards - if (step > 0 && end <= start) return []; - if (step < 0 && start <= end) return []; + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } - var result = []; + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); - for (var i = start; i != end; i += step) { - if ((step < 0 && i <= end) || (step > 0 && i >= end)) break; - result.push(arr[i]); - } + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; - return result; -} + outer: + while (length-- && resIndex < takeCount) { + index += dir; -function integer(val) { - return String(val).match(/^[0-9]+$/) ? parseInt(val) : - Number.isFinite(val) ? parseInt(val, 10) : 0; -} + var iterIndex = -1, + value = array[index]; -}).call(this,require("FWaASH"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/jsonpath/lib/slice.js","/node_modules/jsonpath/lib") -},{"FWaASH":50,"buffer":52}],111:[function(require,module,exports){ -(function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){ -/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } - /** Used as the semantic version number. */ - var VERSION = '4.17.21'; + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; + /*------------------------------------------------------------------------*/ - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function', - INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; + /*------------------------------------------------------------------------*/ - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + return index < 0 ? undefined : data[index][1]; + } - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; - /** Used to match leading whitespace. */ - var reTrimStart = /^\s+/; + /*------------------------------------------------------------------------*/ - /** Used to match a single whitespace character. */ - var reWhitespace = /\s/; + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } - /** - * Used to validate the `validate` option in `_.template` variable. - * - * Forbids characters which could potentially change the meaning of the function argument definition: - * - "()," (modification of function parameters) - * - "=" (default value) - * - "[]{}" (destructuring of function parameters) - * - "/" (beginning of a comment) - * - whitespace - */ - var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; + /*------------------------------------------------------------------------*/ - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + /*------------------------------------------------------------------------*/ - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); + this.size = data.size; + return result; + } - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; + /*------------------------------------------------------------------------*/ - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; - if (types) { - return types; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } - /*--------------------------------------------------------------------------*/ + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; } - return func.apply(thisArg, args); - } - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } } + return true; } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); } + return setTimeout(function() { func.apply(undefined, args); }, wait); } - return true; - } - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; + if (!length) { + return result; } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); - while (++index < length) { - if (comparator(value, array[index])) { - return true; + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } } + return result; } - return false; - } - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); - while (++index < length) { - array[offset + index] = values[index]; + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; } - return array; - } - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } + while (++index < length) { + var value = array[index], + current = iteratee(value); - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; } - return accumulator; - } - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; } + return array; } - return false; - } - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } + predicate || (predicate = isFlattenable); + result || (result = []); - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } } - }); - return result; - } + return result; + } - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); } - return -1; - } - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } - while (++index < length) { - if (comparator(array[index], value)) { - return index; + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; } + return (index && index == length) ? object : undefined; } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } - array.sort(comparer); - while (length--) { - array[length] = array[length].value; + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); } - return array; - } - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } } + return result; } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - while (++index < n) { - result[index] = iteratee(index); + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; } - return result; - } - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } - /** - * The base implementation of `_.trim`. - * - * @private - * @param {string} string The string to trim. - * @returns {string} Returns the trimmed string. - */ - function baseTrim(string) { - return string - ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') - : string; - } + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; - while (length--) { - if (array[length] === placeholder) { - ++result; + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } - while (!(data = iterator.next()).done) { - result.push(data.value); + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; } - return result; - } - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } } + return result; } - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } - while (++index < length) { - if (array[index] === value) { - return index; + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; } - return -1; - } - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); } - return index; - } - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ - function trimmedEndIndex(string) { - var index = string.length; + var isCommon = newValue === undefined; - while (index-- && reWhitespace.test(string.charAt(index))) {} - return index; - } + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; } - return result; - } - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - /*--------------------------------------------------------------------------*/ + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; - /** Used to generate unique IDs. */ - var idCounter = 0; + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. */ - var nativeObjectToString = objectProto.toString; + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, - symIterator = Symbol ? Symbol.iterator : undefined, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + return result; + } - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } - /** Used to lookup unminified function names. */ - var realNames = {}; + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; - /*------------------------------------------------------------------------*/ + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` + * The base implementation of `setData` without support for hot loop shorting. * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. * - * function square(n) { - * return n * n; - * } + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. * - * var wrapped = _([1, 2, 3]); + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. * - * // Returns a wrapped value. - * var squares = wrapped.map(square); + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. * - * _.isArray(squares); - * // => false + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). * - * _.isArray(squares.value()); - * // => true + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; + function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); + if (setLow) { + low = mid + 1; + } else { + high = mid; } } - return new LodashWrapper(value); + return nativeMin(high, MAX_ARRAY_INDEX); } /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. * * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); + } + return result; + } /** - * The function whose prototype chain sequence wrappers inherit from. + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. * * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. */ - function baseLodash() { - // No operation performed. + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; } /** - * The base constructor for creating `lodash` wrapper objects. + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. * * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. + * @param {*} value The value to process. + * @returns {string} Returns the string. */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. + * The base implementation of `_.uniqBy` without support for iteratee shorthands. * - * @static - * @memberOf _ - * @type {Object} + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} - /*------------------------------------------------------------------------*/ + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. * * @private - * @constructor - * @param {*} value The value to wrap. + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); } /** - * Creates a clone of the lazy wrapper object. + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. * * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); } /** - * Reverses the direction of lazy iteration. + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. * * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); } return result; } /** - * Extracts the unwrapped value from its lazy wrapper. + * Casts `value` to an empty array if it's not an array like object. * * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; } - var result = []; + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } - outer: - while (length-- && resIndex < takeCount) { - index += dir; + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; - var iterIndex = -1, - value = array[index]; + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - /*------------------------------------------------------------------------*/ + buffer.copy(result); + return result; + } /** - * Creates a hash object. + * Creates a clone of `arrayBuffer`. * * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; } /** - * Removes all key-value entries from the hash. + * Creates a clone of `dataView`. * * @private - * @name clear - * @memberOf Hash + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); } /** - * Removes `key` and its value from the hash. + * Creates a clone of `regexp`. * * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; return result; } /** - * Gets the hash value for `key`. + * Creates a clone of the `symbol` object. * * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; } /** - * Checks if a hash value for `key` exists. + * Creates a clone of `typedArray`. * * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } /** - * Sets the hash `key` to `value`. + * Compares values to sort them in ascending order. * * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); - /*------------------------------------------------------------------------*/ + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } /** - * Creates an list cache object. + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. * * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. */ - function ListCache(entries) { + function compareMultiple(object, other, orders) { var index = -1, - length = entries == null ? 0 : entries.length; + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; - this.clear(); while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; } /** - * Removes all key-value entries from the list cache. + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. * * @private - * @name clear - * @memberOf ListCache + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; } /** - * Removes `key` and its value from the list cache. + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. * * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; - if (index < 0) { - return false; + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; } - --this.size; - return true; + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; } /** - * Gets the list cache value for `key`. + * Copies the values of `source` to `array`. * * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + function copyArray(source, array) { + var index = -1, + length = source.length; - return index < 0 ? undefined : data[index][1]; + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; } /** - * Checks if a list cache value for `key` exists. + * Copies properties of `source` to `object`. * * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; } /** - * Sets the list cache `key` to `value`. + * Copies own symbols of `source` to `object`. * * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); } - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; - /*------------------------------------------------------------------------*/ + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } /** - * Creates a map cache object to store key-value pairs. + * Creates a function like `_.assign`. * * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); } /** - * Removes all key-value entries from the map. + * Creates a `baseEach` or `baseEachRight` function. * * @private - * @name clear - * @memberOf MapCache + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; }; } /** - * Removes `key` and its value from the map. + * Creates a base function for methods like `_.forIn` and `_.forOwn`. * * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; } /** - * Gets the map value for `key`. + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. * * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; } /** - * Checks if a map value for `key` exists. + * Creates a function like `_.lowerFirst`. * * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; } /** - * Sets the map `key` to `value`. + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. * * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; } - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - /** - * - * Creates an array cache object to store unique values. + * Creates a function that wraps `func` to enable currying. * * @private - * @constructor - * @param {Array} [values] The values to cache. + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); } + return wrapper; } /** - * Adds `value` to the array cache. + * Creates a `_.find` or `_.findLast` function. * * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; } /** - * Checks if `value` is in the array cache. + * Creates a `_.flow` or `_.flowRight` function. * * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. */ - function setCacheHas(value) { - return this.__data__.has(value); - } + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; - /*------------------------------------------------------------------------*/ + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } /** - * Creates a stack cache object to store key-value pairs. + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. * * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; } /** - * Removes all key-value entries from the stack. + * Creates a function like `_.invertBy`. * * @private - * @name clear - * @memberOf Stack + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; } /** - * Removes `key` and its value from the stack. + * Creates a function that performs a mathematical operation on two values. * * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; } /** - * Gets the stack value for `key`. + * Creates a function like `_.over`. * * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. */ - function stackGet(key) { - return this.__data__.get(key); + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); } /** - * Checks if a stack value for `key` exists. + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. * * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. */ - function stackHas(key) { - return this.__data__.has(key); + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); } /** - * Sets the stack `key` to `value`. + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. * * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; } - data = this.__data__ = new MapCache(pairs); + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); } - data.set(key, value); - this.size = data.size; - return this; + return wrapper; } - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - /** - * Creates an array of the enumerable property names of the array-like `value`. + * Creates a `_.range` or `_.rangeRight` function. * * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; } - } - return result; + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; } /** - * A specialized version of `_.sample` for arrays. + * Creates a function that performs a relational operation on two values. * * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; } /** - * A specialized version of `_.sampleSize` for arrays. + * Creates a function that wraps `func` to continue currying. * * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); } /** - * A specialized version of `_.shuffle` for arrays. + * Creates a function like `_.round`. * * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; } /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. + * Creates a set object of `values`. * * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; /** - * Gets the index at which the `key` is found in `array` of key-value pairs. + * Creates a `_.toPairs` or `_.toPairsIn` function. * * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); } - } - return -1; + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; } /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); } /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. * * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; } /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. * * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; } /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. * * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; } /** - * The base implementation of `_.at` without support for individual paths. + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. * * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ - function baseAt(object, paths) { + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } } + stack['delete'](array); + stack['delete'](other); return result; } /** - * The base implementation of `_.clamp` which doesn't coerce arguments. + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } } - return number; + return false; } /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. * * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); + if (objLength != othLength && !isPartial) { + return false; } - if (result !== undefined) { - return result; + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } } - if (!isObject(value)) { - return value; + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; + var result = true; + stack.set(object, other); + stack.set(other, object); - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; } + skipCtor || (skipCtor = key == 'constructor'); } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); + } + stack['delete'](object); + stack['delete'](other); return result; } /** - * The base implementation of `_.conforms` which doesn't clone `source`. + * A specialized version of `baseRest` which flattens the rest array. * * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); } /** - * The base implementation of `_.conformsTo` which accepts `props` to check. + * Creates an array of own enumerable property names and symbols of `object`. * * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); } /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. * * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); } /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. + * Gets metadata for `func`. * * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; } } return result; } /** - * The base implementation of `_.forEach` without support for iteratee shorthands. + * Gets the argument placeholder value for `func`. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. */ - var baseEach = createBaseEach(baseForOwn); + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. */ - var baseEachRight = createBaseEach(baseForOwnRight, true); + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } /** - * The base implementation of `_.every` without support for iteratee shorthands. + * Gets the data for `map`. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; } /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. + * Gets the property names, values, and compare flags of `object`. * * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; + function getMatchData(object) { + var result = keys(object), + length = result.length; - while (++index < length) { - var value = array[index], - current = iteratee(value); + while (length--) { + var key = result[length], + value = object[key]; - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } + result[length] = [key, value, isStrictComparable(value)]; } return result; } /** - * The base implementation of `_.fill` without an iteratee call guard. + * Gets the native function at `key` of `object`. * * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. */ - function baseFill(array, value, start, end) { - var length = array.length; + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } } - return array; + return result; } /** - * The base implementation of `_.filter` without support for iteratee shorthands. + * Creates an array of the own enumerable symbols of `object`. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } return result; - } + }; /** - * The base implementation of `_.flatten` with support for restricting flattening. + * Gets the `toStringTag` of `value`. * * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; + var getTag = baseGetTag; - predicate || (predicate = isFlattenable); - result || (result = []); + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; } - } else if (!isStrict) { - result[result.length] = value; } - } - return result; + return result; + }; } /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. + * Gets the view, applying any `transforms` to the `start` and `end` positions. * * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. */ - var baseFor = createBaseFor(); + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. + * Extracts wrapper details from the `source` body comment. * * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. */ - var baseForRight = createBaseFor(true); + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. + * Checks if `path` exists on `object`. * * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); } /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * Initializes an array clone. * * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; } /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. + * Initializes an object clone. * * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; } /** - * The base implementation of `_.get` without support for default values. + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. * * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. */ - function baseGet(object, path) { - path = castPath(path, object); + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); - var index = 0, - length = path.length; + case setTag: + return new Ctor; - while (object != null && index < length) { - object = object[toKey(path[index++])]; + case symbolTag: + return cloneSymbol(object); } - return (index && index == length) ? object : undefined; } /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. + * Inserts wrapper `details` in a comment at the top of the `source` body. * * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); } /** - * The base implementation of `getTag` without fallbacks for buggy environments. + * Checks if `value` is a flattenable `arguments` object or array. * * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); } /** - * The base implementation of `_.gt` which doesn't coerce arguments. + * Checks if `value` is a valid array-like index. * * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ - function baseGt(value, other) { - return value > other; + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); } /** - * The base implementation of `_.has` without support for deep paths. + * Checks if the given arguments are from an iteratee call. * * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; } /** - * The base implementation of `_.hasIn` without support for deep paths. + * Checks if `value` is a property name and not a property path. * * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ - function baseHasIn(object, key) { - return object != null && key in Object(object); + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); } /** - * The base implementation of `_.inRange` which doesn't coerce arguments. + * Checks if `value` is suitable for use as unique object key. * * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); } /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. + * Checks if `func` has a lazy counterpart. * * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } + if (func === other) { + return true; } - return result; + var data = getData(other); + return !!data && func === data[0]; } /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. + * Checks if `func` has its source masked. * * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); } /** - * The base implementation of `_.invoke` without support for individual - * method arguments. + * Checks if `func` is capable of being masked. * * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); - } + var isMaskable = coreJsData ? isFunction : stubFalse; /** - * The base implementation of `_.isArguments`. + * Checks if `value` is likely a prototype object. * * @private * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; } /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. * * @private * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + function isStrictComparable(value) { + return value === value && !isObject(value); } /** - * The base implementation of `_.isDate` without Node.js optimizations. + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; } /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. * * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; } /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. * * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; } - if (!isSameTag) { - return false; + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; + return data; } /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. * * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); } } - return true; + return result; } /** - * The base implementation of `_.isNative` without bad shim checks. + * Converts `value` to a string using `Object.prototype.toString`. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); + function objectToString(value) { + return nativeObjectToString.call(value); } /** - * The base implementation of `_.isRegExp` without Node.js optimizations. + * A specialized version of `baseRest` which transforms the rest array. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; } /** - * The base implementation of `_.isSet` without Node.js optimizations. + * Gets the parent value at `path` of `object`. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); } /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; } - return property(value); + return array; } /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". * * @private * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; } - return result; - } - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); + if (key == '__proto__') { + return; } - var isProto = isPrototype(object), - result = []; - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; + return object[key]; } /** - * The base implementation of `_.lt` which doesn't coerce arguments. + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. * * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. */ - function baseLt(value, other) { - return value < other; - } + var setData = shortOut(baseSetData); /** - * The base implementation of `_.map` without support for iteratee shorthands. + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; /** - * The base implementation of `_.matches` which doesn't clone `source`. + * Sets the `toString` method of `func` to return `string`. * * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } + var setToString = shortOut(baseSetToString); /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. * * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); } /** - * The base implementation of `_.merge` without support for multiple sources. + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. * * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; + function shortOut(func) { + var count = 0, + lastCalled = 0; - if (newValue === undefined) { - newValue = srcValue; + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; } - assignMergeValue(object, key, newValue); + } else { + count = 0; } - }, keysIn); + return func.apply(undefined, arguments); + }; } /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. * * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); + array[rand] = array[index]; + array[index] = value; } - assignMergeValue(object, key, newValue); + array.length = size; + return array; } /** - * The base implementation of `_.nth` which doesn't coerce arguments. + * Converts `string` to a property path array. * * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); /** - * The base implementation of `_.orderBy` without param guards. + * Converts `value` to a string key if it's not a string or symbol. * * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. */ - function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; } - - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** - * The base implementation of `_.pick` without support for individual - * property identifiers. + * Converts `func` to its source code. * * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; } /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. + * Updates wrapper `details` based on `bitmask` flags. * * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); } - } - return result; + }); + return details.sort(); } /** - * A specialized version of `baseProperty` which supports deep paths. + * Creates a clone of `wrapper`. * * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; } + /*------------------------------------------------------------------------*/ + /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; } } - return array; + return result; } /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. + * Creates a new array concatenating `array` with any additional arrays + * and/or values. * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } + while (index--) { + args[index - 1] = arguments[index]; } - return array; + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); } /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; } - return result; - } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); /** - * The base implementation of `_.repeat` which doesn't coerce arguments. + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); - return result; + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); } /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * Creates a slice of `array` with `n` elements dropped from the end. * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); } /** - * The base implementation of `_.sample`. + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] */ - function baseSample(collection) { - return arraySample(values(collection)); + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; } /** - * The base implementation of `_.sampleSize` without param guards. + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; } /** - * The base implementation of `_.set`. + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; } - return object; + return baseFill(array, value, start, end); } /** - * The base implementation of `setData` without support for hot loop shorting. + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); } /** - * The base implementation of `_.slice` without an iteratee call guard. + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); } - return result; + return baseFindIndex(array, getIteratee(predicate, 3), index, true); } /** - * The base implementation of `_.some` without support for iteratee shorthands. + * Flattens `array` a single level deep. * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; } /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. + * Recursively flattens `array`. * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; } /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). + * Recursively flatten `array` up to `depth` times. * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - var low = 0, - high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - - value = iteratee(value); - var valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; } - return nativeMin(high, MAX_ARRAY_INDEX); + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); } /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } */ - function baseSortedUniq(array, iteratee) { + function fromPairs(pairs) { var index = -1, - length = array.length, - resIndex = 0, - result = []; + length = pairs == null ? 0 : pairs.length, + result = {}; while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } + var pair = pairs[index]; + result[pair[0]] = pair[1]; } return result; } /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. + * Gets the first element of `array`. * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + function head(array) { + return (array && array.length) ? array[0] : undefined; } /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. * - * @private + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); } - return result; + return baseIndexOf(array, value, index); } /** - * The base implementation of `_.unset`. + * Gets all but the last element of `array`. * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; } /** - * The base implementation of `_.update`. + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); } /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. + * Gets the last element of `array`. * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; } /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; } - return result; + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); } /** - * Casts `value` to an empty array if it's not an array like object. + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; } /** - * Casts `value` to `identity` if it's not a function. + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } + var pull = baseRest(pullAll); /** - * Casts `value` to a path array if it's not one. + * This method is like `_.pull` except that it accepts an array of values to remove. * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; } /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; } /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } /** - * Creates a clone of `buffer`. + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); - buffer.copy(result); return result; - } + }); /** - * Creates a clone of `arrayBuffer`. + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); return result; } /** - * Creates a clone of `dataView`. + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + function reverse(array) { + return array == null ? array : nativeReverse.call(array); } /** - * Creates a clone of `regexp`. + * Creates a slice of `array` from `start` up to, but not including, `end`. * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); } /** - * Creates a clone of the `symbol` object. + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + function sortedIndex(array, value) { + return baseSortedIndex(array, value); } /** - * Creates a clone of `typedArray`. + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); } /** - * Compares values to sort them in ascending order. + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; } } - return 0; + return -1; } /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); } /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); } /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; } } - return result; + return -1; } /** - * Copies the values of `source` to `array`. + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; } /** - * Copies properties of `source` to `object`. + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; } /** - * Copies own symbols of `source` to `object`. + * Gets all but the first element of `array`. * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; } /** - * Copies own and inherited symbols of `source` to `object`. + * Creates a slice of `array` with `n` elements taken from the beginning. * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); } /** - * Creates a function like `_.groupBy`. + * Creates a slice of `array` with `n` elements taken from the end. * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); } /** - * Creates a function like `_.assign`. + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; } /** - * Creates a `baseEach` or `baseEachRight` function. + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; } /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; } - return wrapper; - } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); /** - * Creates a function like `_.lowerFirst`. + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; } /** - * Creates a function that wraps `func` to enable currying. + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; } /** - * Creates a `_.find` or `_.findLast` function. + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; } /** - * Creates a `_.flow` or `_.flowRight` function. + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); }); } /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; } - return wrapper; + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); } /** - * Creates a function like `_.invertBy`. + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); /** - * Creates a function that performs a mathematical operation on two values. + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); /** - * Creates a function like `_.over`. + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } + var zip = baseRest(unzip); /** - * Creates a `_.range` or `_.rangeRight` function. + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); } /** - * Creates a function that performs a relational operation on two values. + * This method is like `_.zipObject` except that it supports property paths. * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); } /** - * Creates a function that wraps `func` to continue currying. + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } + /*------------------------------------------------------------------------*/ /** - * Creates a function like `_.round`. + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; } /** - * Creates a set object of `values`. + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; + function tap(value, interceptor) { + interceptor(value); + return value; + } /** - * Creates a `_.toPairs` or `_.toPairsIn` function. + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; + function thru(value, interceptor) { + return interceptor(value); } /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. + * This method is the wrapper version of `_.at`. * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; - if (data) { - mergeData(newData, data); + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); } /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. + * Executes the chain sequence and returns the wrapped result. * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); } /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); } - return objValue; + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; } /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. + * Enables the wrapper to be iterable. * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; + function wrapperToIterator() { + return this; } /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. + * Creates a clone of the chain sequence planting `value` as the wrapped value. * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; + function wrapperPlant(value) { + var result, + parent = this; - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; } + var previous = clone; + parent = parent.__wrapped__; } - stack['delete'](array); - stack['delete'](other); + previous.__wrapped__ = value; return result; } /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. + * This method is the wrapper version of `_.reverse`. * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * **Note:** This method mutates the wrapped array. * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); } - return false; + return this.thru(reverse); } /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. + * Executes the chain sequence to resolve the unwrapped value. * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; + /*------------------------------------------------------------------------*/ - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); } - stack['delete'](object); - stack['delete'](other); - return result; - } + }); /** - * A specialized version of `baseRest` which flattens the rest array. + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); } /** - * Creates an array of own enumerable property names and symbols of `object`. + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); } /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } + var find = createFind(findIndex); /** - * Gets metadata for `func`. + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; + var findLast = createFind(findLastIndex); /** - * Gets the name of `func`. + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); } /** - * Gets the argument placeholder value for `func`. + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); } /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); } /** - * Gets the data for `map`. + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); } /** - * Gets the property names, values, and compare flags of `object`. + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); } /** - * Gets the native function at `key` of `object`. + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); } - return result; + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); } /** - * Creates an array of the own enumerable symbols of `object`. + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); }); - }; + return result; + }); /** - * Creates an array of the own and inherited enumerable symbols of `object`. + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); /** - * Gets the `toStringTag` of `value`. + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); } /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; } - return { 'start': start, 'end': end }; + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); } /** - * Extracts wrapper details from the `source` body comment. + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); /** - * Checks if `path` exists on `object`. + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); } /** - * Initializes an array clone. + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); } /** - * Initializes an object clone. + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); } /** - * Initializes an object clone based on its `toStringTag`. + * Gets a random element from `collection`. * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. + * _.sample([1, 2, 3, 4]); + * // => 2 */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); } /** - * Inserts wrapper `details` in a comment at the top of the `source` body. + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); } /** - * Checks if `value` is a flattenable `arguments` object or array. + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); } /** - * Checks if `value` is a valid array-like index. + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; } /** - * Checks if the given arguments are from an iteratee call. + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; } - return false; + return func(collection, getIteratee(predicate, 3)); } /** - * Checks if `value` is a property name and not a property path. + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] */ - function isKey(value, object) { - if (isArray(value)) { - return false; + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ /** - * Checks if `value` is suitable for use as unique object key. + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ /** - * Checks if `func` has a lazy counterpart. + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); } - var data = getData(other); - return !!data && func === data[0]; + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; } /** - * Checks if `func` has its source masked. + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); } /** - * Checks if `func` is capable of being masked. + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. */ - var isMaskable = coreJsData ? isFunction : stubFalse; + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } /** - * Checks if `value` is likely a prototype object. + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; } /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; return result; } /** - * Merges the function metadata of `source` into `data`. + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - return data; + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; } /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); /** - * Converts `value` to a string using `Object.prototype.toString`. + * Creates a function that invokes `func` with arguments reversed. * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] */ - function objectToString(value) { - return nativeObjectToString.call(value); + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); } /** - * A specialized version of `baseRest` which transforms the rest array. + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; + if (cache.has(key)) { + return cache.get(key); } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; } + // Expose `MapCache`. + memoize.Cache = MapCache; + /** - * Gets the parent value at `path` of `object`. + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; } /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; + function once(func) { + return before(2, func); } /** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * Creates a function that invokes `func` with its arguments transformed. * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] */ - function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - if (key == '__proto__') { - return; - } + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); - return object[key]; - } + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); /** - * Sets metadata for `func`. + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * **Note:** This method doesn't set the "length" property of partially + * applied functions. * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' */ - var setToString = shortOut(baseSetToString); + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); } - array.length = size; - return array; + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); } /** - * Converts `string` to a property path array. + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); } /** - * Converts `func` to its source code. + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); } - return ''; + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); } /** - * Updates wrapper `details` based on `bitmask` flags. + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); + function unary(func) { + return ary(func, 1); } /** - * Creates a clone of `wrapper`. + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); } /*------------------------------------------------------------------------*/ /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. + * Casts `value` as an array if it's not one. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. * @example * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] + * _.castArray(1); + * // => [1] * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { + function castArray() { + if (!arguments.length) { return []; } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; + var value = arguments[0]; + return isArray(value) ? value : [value]; } /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. * * @static * @memberOf _ * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep * @example * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); } /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith * @example * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } * - * console.log(other); - * // => [1, 2, 3, [4]] + * var el = _.cloneWith(document.body, customizer); * - * console.log(array); - * // => [1] + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); } /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. + * This method is like `_.clone` except that it recursively clones `value`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone * @example * - * _.difference([2, 1], [2, 3]); - * // => [1] + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * This method is like `_.cloneWith` except that it recursively clones `value`. * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith * @example * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. * @example * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var object = { 'a': 1, 'b': 2 }; * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } /** - * Creates a slice of `array` with `n` elements dropped from the beginning. + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. * * @static * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * - * _.drop([1, 2, 3]); - * // => [2, 3] + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; * - * _.drop([1, 2, 3], 2); - * // => [3] + * _.eq(object, object); + * // => true * - * _.drop([1, 2, 3], 5); - * // => [] + * _.eq(object, other); + * // => false * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); + function eq(value, other) { + return value === other || (value !== value && other !== other); } /** - * Creates a slice of `array` with `n` elements dropped from the end. + * Checks if `value` is greater than `other`. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte * @example * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] + * _.gte(3, 1); + * // => true * - * _.dropRight([1, 2, 3], 5); - * // => [] + * _.gte(3, 3); + * // => true * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] + * _.gte(1, 3); + * // => false */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). + * Checks if `value` is likely an `arguments` object. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. * @example * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] + * _.isArguments(function() { return arguments; }()); + * // => true * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] + * _.isArguments([1, 2, 3]); + * // => false */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). + * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] + * _.isArray([1, 2, 3]); + * // => true * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] + * _.isArray(document.body.children); + * // => false * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] + * _.isArray('abc'); + * // => false * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] + * _.isArray(_.noop); + * // => false */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } + var isArray = Array.isArray; /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. + * Checks if `value` is classified as an `ArrayBuffer` object. * * @static * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. * @example * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] + * _.isArrayBuffer(new Array(2)); + * // => false */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. * * @static * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. * @example * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 + * _.isArrayLike([1, 2, 3]); + * // => true * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 + * _.isArrayLike(document.body.children); + * // => true * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 + * _.isArrayLike('abc'); + * // => true * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 + * _.isArrayLike(_.noop); + * // => false */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); } /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. * * @static * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. * @example * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 + * _.isArrayLikeObject([1, 2, 3]); + * // => true * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 + * _.isArrayLikeObject(document.body.children); + * // => true * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 + * _.isArrayLikeObject('abc'); + * // => false * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 + * _.isArrayLikeObject(_.noop); + * // => false */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); } /** - * Flattens `array` a single level deep. + * Checks if `value` is classified as a boolean primitive or object. * * @static * @memberOf _ * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. * @example * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); } /** - * Recursively flattens `array`. + * Checks if `value` is a buffer. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. * @example * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } + var isBuffer = nativeIsBuffer || stubFalse; /** - * Recursively flatten `array` up to `depth` times. + * Checks if `value` is classified as a `Date` object. * * @static * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. * @example * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] + * _.isDate(new Date); + * // => true * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] + * _.isDate('Mon April 23 2012'); + * // => false */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. + * Checks if `value` is likely a DOM element. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. * @example * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); } /** - * Gets the first element of `array`. + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. * * @static * @memberOf _ * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. * @example * - * _.head([1, 2, 3]); - * // => 1 + * _.isEmpty(null); + * // => true * - * _.head([]); - * // => undefined + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false */ - function head(array) { - return (array && array.length) ? array[0] : undefined; + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; } /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. * * @static * @memberOf _ * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); + function isEqual(value, other) { + return baseIsEqual(value, other); } /** - * Gets all but the last element of `array`. + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * - * _.initial([1, 2, 3]); - * // => [1, 2] + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; } /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. * @example * - * _.intersection([2, 1], [2, 3]); - * // => [2] + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. * @example * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] + * _.isFinite(3); + * // => true * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). + * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. * @example * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * _.isFunction(_); + * // => true * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] + * _.isFunction(/abc/); + * // => false */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); + function isFunction(value) { + if (!isObject(value)) { + return false; } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } /** - * Converts all elements in `array` into a string separated by `separator`. + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. * @example * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); } /** - * Gets the last element of `array`. + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * - * _.last([1, 2, 3]); - * // => 3 + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 + * _.isObject({}); + * // => true * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); } /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". * * @static * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * - * var array = ['a', 'b', 'c', 'd']; + * _.isObjectLike({}); + * // => true * - * _.nth(array, 1); - * // => 'b' + * _.isObjectLike([1, 2, 3]); + * // => true * - * _.nth(array, -2); - * // => 'c'; + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + function isObjectLike(value) { + return value != null && typeof value == 'object'; } /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. + * Checks if `value` is classified as a `Map` object. * * @static * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. * @example * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * _.isMap(new Map); + * // => true * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] + * _.isMap(new WeakMap); + * // => false */ - var pull = baseRest(pullAll); + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; /** - * This method is like `_.pull` except that it accepts an array of values to remove. + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. * - * **Note:** Unlike `_.difference`, this method mutates `array`. + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. * @example * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * var object = { 'a': 1, 'b': 2 }; * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); } /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. * @example * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); } /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). + * Checks if `value` is `NaN`. * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. * * @static * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. * @example * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * _.isNaN(NaN); + * // => true * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; } /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. + * Checks if `value` is a pristine native function. * - * **Note:** Unlike `_.at`, this method mutates `array`. + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. * * @static * @memberOf _ * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. * @example * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] + * _.isNative(Array.prototype.push); + * // => true * - * console.log(pulled); - * // => ['b', 'd'] + * _.isNative(_); + * // => false */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. + * Checks if `value` is `null`. * * @static * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. * @example * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] + * _.isNull(null); + * // => true * - * console.log(evens); - * // => [2, 4] + * _.isNull(void 0); + * // => false */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; + function isNull(value) { + return value === null; } /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). + * Checks if `value` is `null` or `undefined`. * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. * @example * - * var array = [1, 2, 3]; + * _.isNil(null); + * // => true * - * _.reverse(array); - * // => [3, 2, 1] + * _.isNil(void 0); + * // => true * - * console.log(array); - * // => [3, 2, 1] + * _.isNil(NaN); + * // => false */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); + function isNil(value) { + return value == null; } /** - * Creates a slice of `array` from `start` up to, but not including, `end`. + * Checks if `value` is classified as a `Number` primitive or object. * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); } /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * - * _.sortedIndex([30, 50], 40); - * // => 1 + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; } /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). + * Checks if `value` is classified as a `RegExp` object. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. * @example * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 + * _.isRegExp(/abc/); + * // => true * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 + * _.isRegExp('/abc/'); + * // => false */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. * @example * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; } /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. + * Checks if `value` is classified as a `Set` object. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. * @example * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). + * Checks if `value` is classified as a `String` primitive or object. * * @static + * @since 0.1.0 * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. * @example * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 + * _.isString('abc'); + * // => true * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 + * _.isString(1); + * // => false */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); } /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. + * Checks if `value` is classified as a `Symbol` primitive or object. * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. * @example * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); } /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. + * Checks if `value` is classified as a typed array. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. * @example * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. + * Checks if `value` is `undefined`. * * @static + * @since 0.1.0 * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. * @example * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; + function isUndefined(value) { + return value === undefined; } /** - * Gets all but the first element of `array`. + * Checks if `value` is classified as a `WeakMap` object. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. * @example * - * _.tail([1, 2, 3]); - * // => [2, 3] + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; } /** - * Creates a slice of `array` with `n` elements taken from the beginning. + * Checks if `value` is classified as a `WeakSet` object. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. * @example * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] + * _.isWeakSet(new WeakSet); + * // => true * - * _.take([1, 2, 3], 0); - * // => [] + * _.isWeakSet(new Set); + * // => false */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; } /** - * Creates a slice of `array` with `n` elements taken from the end. + * Checks if `value` is less than `other`. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt * @example * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] + * _.lt(1, 3); + * // => true * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] + * _.lt(3, 3); + * // => false * - * _.takeRight([1, 2, 3], 0); - * // => [] + * _.lt(3, 1); + * // => false */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } + var lt = createRelationalOperation(baseLt); /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). + * Checks if `value` is less than or equal to `other`. * * @static * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte * @example * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] + * _.lte(1, 3); + * // => true * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] + * _.lte(3, 3); + * // => true * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] + * _.lte(3, 1); + * // => false */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). + * Converts `value` to an array. * * @static + * @since 0.1.0 * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. * @example * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] + * _.toArray('abc'); + * // => ['a', 'b', 'c'] * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] + * _.toArray(1); + * // => [] * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); + * _.toArray(null); * // => [] */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); } /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. + * Converts `value` to a finite number. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. * @example * - * _.union([2], [1, 2]); - * // => [2, 1] + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. * @example * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] + * _.toInteger(3.2); + * // => 3 * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. * @example * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * _.toLength(3.2); + * // => 3 * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. + * Converts `value` to a number. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. * @example * - * _.uniq([2, 1, 2]); - * // => [2, 1] + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); } /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. * @example * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] + * function Foo() { + * this.b = 2; + * } * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + function toPlainObject(value) { + return copyObject(value, keysIn(value)); } /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. * @example * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * _.toSafeInteger(3.2); + * // => 3 * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined; - return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); } /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. * * @static * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. * @example * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] + * _.toString(null); + * // => '' * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); + function toString(value) { + return value == null ? '' : baseToString(value); } + /*------------------------------------------------------------------------*/ + /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). * * @static * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn * @example * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] + * function Foo() { + * this.a = 1; + * } * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; } - var result = unzip(array); - if (iteratee == null) { - return result; + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } + }); /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. * - * **Note:** Unlike `_.pull`, this method returns a new array. + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign * @example * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); }); /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith * @example * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); }); /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith * @example * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); }); /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). + * Creates an array of values corresponding to `paths` of `object`. * * @static * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. * @example * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); + var at = flatRest(baseAt); /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. * * @static * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. * @example * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true */ - var zip = baseRest(unzip); + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. * * @static + * @since 0.1.0 * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep * @example * - * _.zipObject(['a', 'b'], [1, 2]); + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); * // => { 'a': 1, 'b': 2 } */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); /** - * This method is like `_.zipObject` except that it supports property paths. + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults * @example * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. * * @static * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. * @example * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. * * @static * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. * @example * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); } /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight * @example * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). */ - function tap(value, interceptor) { - interceptor(value); - return value; + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); } /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. * * @static * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn * @example * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. */ - function thru(value, interceptor) { - return interceptor(value); + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); } /** - * This method is the wrapper version of `_.at`. + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. * - * @name at + * @static * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight * @example * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. * - * @name chain + * @static * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn * @example * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } + * Foo.prototype.c = 3; * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. */ - function wrapperChain() { - return chain(this); + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); } /** - * Executes the chain sequence and returns the wrapped result. + * Creates an array of function property names from own enumerable properties + * of `object`. * - * @name commit + * @static + * @since 0.1.0 * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn * @example * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } * - * wrapped.last(); - * // => 3 + * Foo.prototype.c = _.constant('c'); * - * console.log(array); - * // => [1, 2, 3] + * _.functions(new Foo); + * // => ['a', 'b'] */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); } /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. * - * @name next + * @static * @memberOf _ * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions * @example * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } + * Foo.prototype.c = _.constant('c'); * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); } /** - * Enables the wrapper to be iterable. + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. * - * @name Symbol.iterator + * @static * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. * @example * - * var wrapped = _([1, 2]); + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; * - * wrapped[Symbol.iterator]() === wrapped; - * // => true + * _.get(object, 'a[0].b.c'); + * // => 3 * - * Array.from(wrapped); - * // => [1, 2] + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' */ - function wrapperToIterator() { - return this; + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; } /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. + * Checks if `path` is a direct property of `object`. * - * @name plant + * @static + * @since 0.1.0 * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. * @example * - * function square(n) { - * return n * n; - * } + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true * - * other.value(); - * // => [9, 16] + * _.has(object, ['a', 'b']); + * // => true * - * wrapped.value(); - * // => [1, 4] + * _.has(other, 'a'); + * // => false */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; + function has(object, path) { + return object != null && hasPath(object, path, baseHas); } /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. + * Checks if `path` is a direct or inherited property of `object`. * - * @name reverse + * @static * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. * @example * - * var array = [1, 2, 3]; + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); * - * _(array).reverse().value() - * // => [3, 2, 1] + * _.hasIn(object, 'a'); + * // => true * - * console.log(array); - * // => [3, 2, 1] + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); } /** - * Executes the chain sequence to resolve the unwrapped value. + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. * - * @name value + * @static * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. * @example * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } - /*------------------------------------------------------------------------*/ + result[value] = key; + }, constant(identity)); /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). * * @static * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. * @example * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } + * var object = { 'a': 1, 'b': 2, 'c': 1 }; * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); } else { - baseAssignValue(result, key, 1); + result[value] = [key]; } - }); + }, getIteratee); /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. + * Invokes the method at `path` of `object`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. * @example * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } + var invoke = baseRest(baseInvoke); /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). + * Creates an array of the own enumerable property names of `object`. * - * **Note:** Unlike `_.remove`, this method returns a new array. + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. * * @static - * @memberOf _ * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. * @example * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] + * Foo.prototype.c = 3; * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] + * _.keys('hi'); + * // => ['0', '1'] */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. * @example * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' + * Foo.prototype.c = 3; * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ - var find = createFind(findIndex); + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). * * @static * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues * @example * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; * }); - * // => 3 + * // => { 'a1': 1, 'b2': 2 } */ - var findLast = createFind(findLastIndex); + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). * * @static * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys * @example * - * function duplicate(n) { - * return [n, n]; - * } + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; } /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. * @example * - * function duplicate(n) { - * return [[[n, n]]]; - * } + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. * @example * - * function duplicate(n) { - * return [[[n, n]]]; + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } * } * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. + * **Note:** This method is considerably slower than `_.pick`. * * @static - * @memberOf _ * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. * @example * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. + * var object = { 'a': 1, 'b': '2', 'c': 3 }; * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). * * @static * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. * @example * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); } /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). + * Creates an object composed of the picked `object` properties. * * @static - * @memberOf _ * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. * @example * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } + * var object = { 'a': 1, 'b': '2', 'c': 3 }; * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); }); /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. * @example * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true + * var object = { 'a': 1, 'b': '2', 'c': 3 }; * - * _.includes('abcd', 'bc'); - * // => true + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); + function pickBy(object, predicate) { + if (object == null) { + return {}; } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); } /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. * * @static + * @since 0.1.0 * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. * @example * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' */ - var invokeMap = baseRest(function(collection, path, args) { + function result(object, path, defaultValue) { + path = castPath(path, object); + var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; + length = path.length; - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. * @example * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. * @example * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; + * var object = {}; * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); } /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. * * @static * @memberOf _ * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. * @example * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } + var toPairs = createToPairs(keys); /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. * * @static * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. * @example * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] + * Foo.prototype.c = 3; * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); + var toPairsIn = createToPairs(keysIn); /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. + * @param {*} [accumulator] The custom accumulator value. * @returns {*} Returns the accumulated value. - * @see _.reduceRight * @example * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { * (result[value] || (result[value] = [])).push(key); - * return result; * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + * // => { '1': ['a', 'c'], '2': ['b'] } */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; } /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. * @example * - * var array = [[0, 1], [2, 3], [4, 5]]; + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + function unset(object, path) { + return object == null ? true : baseUnset(object, path); } /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. * @example * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); } /** - * Gets a random element from `collection`. + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. * * @static * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. * @example * - * _.sample([1, 2, 3, 4]); - * // => 2 + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); } /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. * * @static + * @since 0.1.0 * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. * @example * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); } /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. * @example * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); } + /*------------------------------------------------------------------------*/ + /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. + * Clamps `number` within the inclusive `lower` and `upper` bounds. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. * @example * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 + * _.clamp(-10, -5, 5); + * // => -5 * - * _.size('pebbles'); - * // => 7 + * _.clamp(10, -5, 5); + * // => 5 */ - function size(collection) { - if (collection == null) { - return 0; + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; } - return baseKeys(collection).length; + return baseClamp(toNumber(number), lower, upper); } /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight * @example * - * _.some([null, 0, 'yes', false], Boolean); + * _.inRange(3, 2, 4); * // => true * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; + * _.inRange(4, 8); + * // => true * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); + * _.inRange(4, 2); * // => false * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); * // => true * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); * // => true */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); } - return func(collection, getIteratee(predicate, 3)); + number = toNumber(number); + return baseInRange(number, start, end); } /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. * * @static * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. * @example * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; + * _.random(0, 5); + * // => an integer between 0 and 5 * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * _.random(5); + * // => also an integer between 0 and 5 * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } /*------------------------------------------------------------------------*/ /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). * * @static * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. * @example * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. + * Converts the first character of `string` to upper case and the remaining + * to lower case. * * @static * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. * @example * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. + * _.capitalize('FRED'); + * // => 'Fred' */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); } /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). * * @static * @memberOf _ * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. * @example * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] + * _.deburr('déjà vu'); + * // => 'deja vu' */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); } /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. + * Checks if `string` ends with the given target string. * * @static * @memberOf _ * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. * @example * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; } /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. * * @static - * @memberOf _ * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. * @example * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. * * @static * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. * @example * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' * - * bound('!'); - * // => 'hiya fred!' + * _.kebabCase('fooBar'); + * // => 'foo-bar' * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); }); /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. + * Converts `string`, as space separated words, to lower case. * * @static * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. * @example * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' * - * curried(1, 2, 3); - * // => [1, 2, 3] + * _.lowerCase('fooBar'); + * // => 'foo bar' * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. + * Converts the first character of `string` to lower case. * * @static * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. * @example * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] + * _.lowerFirst('Fred'); + * // => 'fred' * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] + * _.lowerFirst('FRED'); + * // => 'fRED' */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } + var lowerFirst = createCaseFirst('toLowerCase'); /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. * @example * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); + * _.pad('abc', 8); + * // => ' abc ' * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); + * _.pad('abc', 3); + * // => 'abc' */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); } /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. * @example * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. + * _.padEnd('abc', 6); + * // => 'abc ' * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. + * _.padEnd('abc', 3); + * // => 'abc' */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } /** - * Creates a function that invokes `func` with arguments reversed. + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. * * @static * @memberOf _ * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. * @example * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); + * _.padStart('abc', 6); + * // => ' abc' * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; } /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. * * @static * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. * @example * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] + * _.parseInt('08'); + * // => 8 * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); } - // Expose `MapCache`. - memoize.Cache = MapCache; - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. + * Repeats the given string `n` times. * * @static * @memberOf _ * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. * @example * - * function isEven(n) { - * return n % 2 == 0; - * } + * _.repeat('*', 3); + * // => '***' * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; + return baseRepeat(toString(string), n); } /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). * * @static * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. * @example * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' */ - function once(func) { - return before(2, func); + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); } /** - * Creates a function that invokes `func` with its arguments transformed. + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). * * @static - * @since 4.0.0 * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. * @example * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' * - * func(9, 3); - * // => [81, 6] + * _.snakeCase('fooBar'); + * // => 'foo_bar' * - * func(10, 5); - * // => [100, 10] + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); }); /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. + * Splits `string` by `separator`. * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). * * @static * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. * @example * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); - }); + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). * * @static * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. * @example * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' + * _.startCase('fooBar'); + * // => 'Foo Bar' * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); }); /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. + * Checks if `string` starts with the given target string. * * @static * @memberOf _ * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. * @example * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); + * _.startsWith('abc', 'a'); + * // => true * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); - }); + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). * * @static + * @since 0.1.0 * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. * @example * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': '