Comparing version 3.1.23 to 3.1.24
@@ -1,1 +0,1 @@ | ||
{"type":"inspect","data":{"name":"docx4js","description":"javascript docx parser","dist-tags":{"latest":"3.1.21"},"versions":["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.0.7","0.0.8","0.0.9","0.10.0","0.10.1","0.10.2","0.10.3","0.10.4","0.11.0","1.0.0","1.0.1","1.0.2","1.1.0","1.1.1","1.2.0","1.2.1","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.0","1.3.3","1.3.5","1.3.6","1.4.0","1.4.1","2.0.1","3.1.0","3.1.1","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","3.1.14","3.1.15","3.1.16","3.1.21"],"maintainers":[{"name":"lalalic","email":"lalalic@139.com"}],"time":{"modified":"2019-03-08T07:26:04.752Z","created":"2014-12-31T07:17:41.884Z","0.0.1":"2014-12-31T07:17:41.884Z","0.0.2":"2014-12-31T07:50:14.394Z","0.0.3":"2014-12-31T09:08:52.206Z","0.0.4":"2014-12-31T23:36:35.959Z","0.0.5":"2015-01-03T00:59:28.333Z","0.0.6":"2015-01-04T06:44:24.371Z","0.0.7":"2015-01-06T08:55:19.698Z","0.0.8":"2015-01-06T09:02:28.694Z","0.0.9":"2015-01-06T09:07:47.987Z","0.10.0":"2015-01-08T08:16:55.368Z","0.10.1":"2015-01-12T07:40:41.661Z","0.10.2":"2015-01-12T11:02:48.403Z","0.10.3":"2015-01-12T11:14:20.242Z","0.10.4":"2015-01-12T11:20:22.267Z","0.11.0":"2015-01-23T08:41:25.286Z","1.0.0":"2016-04-01T07:49:21.024Z","1.0.1":"2016-04-01T07:51:41.552Z","1.0.2":"2016-04-01T15:17:55.005Z","1.1.0":"2016-04-05T10:40:03.492Z","1.1.1":"2016-04-05T15:02:54.588Z","1.2.0":"2016-04-06T06:53:01.219Z","1.2.1":"2016-04-06T11:07:42.159Z","1.2.3":"2016-04-07T08:18:21.737Z","1.2.4":"2016-04-07T14:13:39.492Z","1.2.5":"2016-04-11T11:18:54.837Z","1.2.6":"2016-04-12T06:44:18.148Z","1.2.7":"2016-04-13T08:54:23.879Z","1.3.0":"2016-04-19T07:41:11.144Z","1.3.3":"2016-05-26T10:23:51.709Z","1.3.5":"2016-05-27T08:11:26.065Z","1.3.6":"2016-05-27T10:42:35.456Z","1.4.0":"2016-07-12T10:28:56.462Z","2.0.1":"2016-07-29T08:38:59.071Z","1.4.1":"2016-11-13T14:12:54.880Z","3.1.0":"2017-02-21T03:08:27.838Z","3.1.1":"2017-02-23T03:12:01.396Z","3.1.6":"2017-08-16T07:24:25.318Z","3.1.7":"2017-08-18T03:28:39.009Z","3.1.8":"2017-08-22T02:52:38.958Z","3.1.9":"2017-08-23T07:33:23.378Z","3.1.10":"2017-08-24T10:56:32.570Z","3.1.11":"2017-08-28T07:48:03.219Z","3.1.12":"2017-08-29T10:45:12.645Z","3.1.13":"2018-07-22T02:26:20.300Z","3.1.14":"2019-01-24T09:24:38.770Z","3.1.15":"2019-01-24T09:42:04.105Z","3.1.16":"2019-01-24T10:19:53.382Z","3.1.21":"2019-03-08T07:26:02.181Z"},"homepage":"https://github.com/lalalic/docx4js#readme","keywords":["docx","parser","javascript"],"repository":{"type":"git","url":"git+https://github.com/lalalic/docx4js.git"},"author":{"name":"Raymond Li","email":"lalalic@139.com"},"bugs":{"url":"https://github.com/lalalic/docx4js/issues"},"license":"MIT","users":{"mzheng":true,"zuojiang":true},"version":"3.1.21","devDependencies":{"babel-cli":"^6.6.5","babel-plugin-add-module-exports":"^0.1.2","babel-plugin-transform-class-properties":"^6.6.0","babel-plugin-transform-object-rest-spread":"^6.6.5","babel-preset-es2015":"^6.6.0","browserify":"^13.0.0","jest":"^18.1.0","uglifyify":"^3.0.1","watchify":">=3.0.0 <4.0.0"},"dependencies":{"cfb":"^0.12.1","cheerio":"^0.22.0","htmlparser2":"^3.9.2","jszip":"^2.6.0"},"babel":{"presets":["es2015"],"plugins":["babel-plugin-add-module-exports","babel-plugin-transform-object-rest-spread","babel-plugin-transform-class-properties"],"sourceMaps":"inline"},"main":"./lib/","scripts":{"compile":"babel src -d lib","compile-superdaddy":"babel src -d ../superdaddy/node_modules/docx4js/lib","compile-docx-template":"babel src -d ../docx-template/node_modules/docx4js/lib","compile-we-edit":"babel src -d ../we-edit/node_modules/docx4js/lib","build":"browserify -g uglifyify -r ./lib/index.js:docx4js -o dist/docx4js.js","build.watch":"watchify -v -d -r ./lib/index.js:docx4js -o dist/index.js","test":"jest","test.http":"http-server dist -c-1","doc":"esdoc -c esdoc.json"},"gitHead":"af13983c6fae01a8960c1c4868806fcd5f13dd2e","dist":{"integrity":"sha512-lhg4iqiHohZu/RaqffFJoqp3pRpAOENcb/Z2zHmmJnovZ+h42/EacGcJl6fz6GtadKlmugC8z+XRqLgERDIO4g==","shasum":"d12f9249617d2ecb83e10cb9fbef7b1c9d7c5024","tarball":"https://registry.npmjs.org/docx4js/-/docx4js-3.1.21.tgz","fileCount":45,"unpackedSize":1025355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcghkKCRA9TVsSAnZWagAAooEP/0xfbCmHmI+Z2bM/Uym0\nBUmKvaqDTjQIRZ3ifTzTiNsSvYfeX6WhryPUM/ZFzDWABDqEEgF1YeNh7USD\nJhuso5Eobp9H0nJl6ANK7LR9dwhh54xjF6p55H2VqSQoDI1/ltIdbkrdTzuO\ntFwfiFY6zU1NjmgwUQEWRg4YL1Gxeyus0h+Mro7lSSmvK7jfJ7zV9379XKJL\ndfLLSyBQq5WK8tj/CsZ2gvqxlYMBD3bEJ3VDZaCU1y4PpH3Qt7BxA7n/U5KW\nlvUp6/U1F2yFwdOH5hxoHT9MvMWIM4DjKMo1hg6nlozJVsI/03IHiq4M0W2x\naRljynIdamN4e9x8ZUB9R9NDKfojkYxlggD5n4JRV6m+rRwTNnIuMy5k2jZe\nXFD4SzCf82538w8idpE6eOcBHkHRIIKzxndsD6daoCSvu6VPIP9Josd14LsO\nBYqdUka0laXIkyHK2S2DexVQ/nGAqa3UoK3rN3ICHCJbsxH++mrtcyzFqQZZ\n3RPpYqhHAllkB9R21W6/kFK9F4tSzHbW/hzEFDUn4nuH6fUX1jh2keH74ZMb\na/R2JkGQGdXpGroAsjWUG3hXw2nAnyzn2HqGvoTzlt+kvhgLeCK+uOP4DanR\nn19U2DeR130it5cESuNU2vpHNL3sLcHR4B91I8nCuW9Ot+AEVknKvjGGXJCd\nR9BM\r\n=GC+1\r\n-----END PGP SIGNATURE-----\r\n"},"directories":{}}} | ||
{"type":"inspect","data":{"name":"docx4js","description":"javascript docx parser","dist-tags":{"latest":"3.1.23"},"versions":["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.0.7","0.0.8","0.0.9","0.10.0","0.10.1","0.10.2","0.10.3","0.10.4","0.11.0","1.0.0","1.0.1","1.0.2","1.1.0","1.1.1","1.2.0","1.2.1","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.0","1.3.3","1.3.5","1.3.6","1.4.0","1.4.1","2.0.1","3.1.0","3.1.1","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","3.1.14","3.1.15","3.1.16","3.1.21","3.1.23"],"maintainers":[{"name":"lalalic","email":"lalalic@139.com"}],"time":{"modified":"2019-03-10T07:40:08.737Z","created":"2014-12-31T07:17:41.884Z","0.0.1":"2014-12-31T07:17:41.884Z","0.0.2":"2014-12-31T07:50:14.394Z","0.0.3":"2014-12-31T09:08:52.206Z","0.0.4":"2014-12-31T23:36:35.959Z","0.0.5":"2015-01-03T00:59:28.333Z","0.0.6":"2015-01-04T06:44:24.371Z","0.0.7":"2015-01-06T08:55:19.698Z","0.0.8":"2015-01-06T09:02:28.694Z","0.0.9":"2015-01-06T09:07:47.987Z","0.10.0":"2015-01-08T08:16:55.368Z","0.10.1":"2015-01-12T07:40:41.661Z","0.10.2":"2015-01-12T11:02:48.403Z","0.10.3":"2015-01-12T11:14:20.242Z","0.10.4":"2015-01-12T11:20:22.267Z","0.11.0":"2015-01-23T08:41:25.286Z","1.0.0":"2016-04-01T07:49:21.024Z","1.0.1":"2016-04-01T07:51:41.552Z","1.0.2":"2016-04-01T15:17:55.005Z","1.1.0":"2016-04-05T10:40:03.492Z","1.1.1":"2016-04-05T15:02:54.588Z","1.2.0":"2016-04-06T06:53:01.219Z","1.2.1":"2016-04-06T11:07:42.159Z","1.2.3":"2016-04-07T08:18:21.737Z","1.2.4":"2016-04-07T14:13:39.492Z","1.2.5":"2016-04-11T11:18:54.837Z","1.2.6":"2016-04-12T06:44:18.148Z","1.2.7":"2016-04-13T08:54:23.879Z","1.3.0":"2016-04-19T07:41:11.144Z","1.3.3":"2016-05-26T10:23:51.709Z","1.3.5":"2016-05-27T08:11:26.065Z","1.3.6":"2016-05-27T10:42:35.456Z","1.4.0":"2016-07-12T10:28:56.462Z","2.0.1":"2016-07-29T08:38:59.071Z","1.4.1":"2016-11-13T14:12:54.880Z","3.1.0":"2017-02-21T03:08:27.838Z","3.1.1":"2017-02-23T03:12:01.396Z","3.1.6":"2017-08-16T07:24:25.318Z","3.1.7":"2017-08-18T03:28:39.009Z","3.1.8":"2017-08-22T02:52:38.958Z","3.1.9":"2017-08-23T07:33:23.378Z","3.1.10":"2017-08-24T10:56:32.570Z","3.1.11":"2017-08-28T07:48:03.219Z","3.1.12":"2017-08-29T10:45:12.645Z","3.1.13":"2018-07-22T02:26:20.300Z","3.1.14":"2019-01-24T09:24:38.770Z","3.1.15":"2019-01-24T09:42:04.105Z","3.1.16":"2019-01-24T10:19:53.382Z","3.1.21":"2019-03-08T07:26:02.181Z","3.1.23":"2019-03-10T07:40:06.292Z"},"homepage":"https://github.com/lalalic/docx4js#readme","keywords":["docx","parser","javascript"],"repository":{"type":"git","url":"git+https://github.com/lalalic/docx4js.git"},"author":{"name":"Raymond Li","email":"lalalic@139.com"},"bugs":{"url":"https://github.com/lalalic/docx4js/issues"},"license":"MIT","users":{"mzheng":true,"zuojiang":true},"version":"3.1.23","devDependencies":{"babel-cli":"^6.6.5","babel-plugin-add-module-exports":"^0.1.2","babel-plugin-transform-class-properties":"^6.6.0","babel-plugin-transform-object-rest-spread":"^6.6.5","babel-preset-es2015":"^6.6.0","browserify":"^13.0.0","jest":"^18.1.0","uglifyify":"^3.0.1","watchify":">=3.0.0 <4.0.0"},"dependencies":{"cfb":"^0.12.1","cheerio":"^0.22.0","htmlparser2":"^3.9.2","jszip":"^2.6.0"},"babel":{"presets":["es2015"],"plugins":["babel-plugin-add-module-exports","babel-plugin-transform-object-rest-spread","babel-plugin-transform-class-properties"],"sourceMaps":"inline"},"main":"./lib/","scripts":{"compile":"babel src -d lib","compile-superdaddy":"babel src -d ../superdaddy/node_modules/docx4js/lib","compile-docx-template":"babel src -d ../docx-template/node_modules/docx4js/lib","compile-we-edit":"babel src -d ../we-edit/node_modules/docx4js/lib","build":"browserify -g uglifyify -r ./lib/index.js:docx4js -o dist/docx4js.js","build.watch":"watchify -v -d -r ./lib/index.js:docx4js -o dist/index.js","test":"jest","test.http":"http-server dist -c-1","doc":"esdoc -c esdoc.json"},"gitHead":"328562f1065adf558cf8d39d53f5dfc03efe5c5d","dist":{"shasum":"445b9043d16b1e7ea103694cd0959c63be864055","tarball":"https://registry.npmjs.org/docx4js/-/docx4js-3.1.23.tgz","integrity":"sha512-D0r4/vg7jbF5EXMLX12UHtQ8kPNW70QibZ5wxZyMWHsh0feaCCYdpJDGiM+CAzlFppO+j6i6mQB+O+MzwO5NHw==","fileCount":46,"unpackedSize":1025769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchL9WCRA9TVsSAnZWagAApVcQAKETyl8xKykQO2G+csIe\n7t+lHnprZzFolgNxQ7ecPx8J8W8xKbclO2n7t7BecUvR5oyjpVysWt/GVzFL\nILV5gP6Xa6ljoGMPLkE2NrhwzTwlSPtG2XM9+P74mWe7PmyRZe+Byu1ZmZdf\n0fJ7iILyKK7k+CjO6I7UWqivhpsYs0SDjKQdJhtDyF6D7lRgcgW13Kq6ZJ5B\nEpTfdW7Ug0DrrXUQaOVNHJx+wyXzgElCa2iKZ7wcaGGzMe/9DdMT3QT1Ibp3\nUoR1upye3S7xFk44rT/pfv/zzteXG5wQDNEdWo84RKM9R4WsO0HpK8hs/F//\nrdHSjF0qb6naLQ1YQ0xaSf2wS4WQPKvbz21maigd+tafNrdCIWATSN+Xth+q\nHLkDLLY/Yk4chZx621QjQMwGkfUwP70oJmEM89JttFI65MtzjVirdohfylK4\nOdGqpSukDRxexwbhFdrJhse9JVOSCb6xsnYxbEGAKbdzfnMA1Cb+BHKfMQxr\nMKOkjXCxVllT9+/axculg25lcX669PI6WOIUkzvXqrKNlQfbpVtIfUE2kxsk\nVzWW0Cl5RaKCNYVDsz6L9RK7z+N2OACEr5M7rx61VJzeUjrdl937epoJ0KGr\nEqFAUcCBTKvanetaY+o5tRNjDmOQpF/y3ODj6Fa3/u0lBSTszMalFh4NlQh1\nE33Q\r\n=cZ+q\r\n-----END PGP SIGNATURE-----\r\n"},"directories":{}}} |
@@ -58,2 +58,14 @@ "use strict"; | ||
}); | ||
var $ = this.styles; | ||
this.styles.prototype.basest = function (selector) { | ||
var current = this; | ||
while (current.length > 0) { | ||
if (current.is(selector)) { | ||
return $(current); | ||
} | ||
current = $.root().find("w\\:style[w\\:styleId=\"" + current.children("w\\:basedOn").attr("w:val") + "\"]"); | ||
} | ||
return this.not(this); | ||
}; | ||
} | ||
@@ -157,5 +169,5 @@ }, { | ||
var numPr = pPr.find("w\\:numPr>w\\:numId"); | ||
var numPr = pPr.children("w\\:numPr"); | ||
if (!numPr.length && styleId) { | ||
numPr = officeDocument.styles("w\\:style[w\\:styleId=\"" + styleId + "\"] w\\:numPr>w\\:numId"); | ||
numPr = officeDocument.styles("w\\:style[w\\:styleId=\"" + styleId + "\"]").basest(":has(w\\:numPr)").find("w\\:numPr"); | ||
} | ||
@@ -166,10 +178,10 @@ | ||
identity.numId = numPr.find("w\\:numId").attr("w:val"); | ||
identity.level = numPr.find("w\\:ilvl").attr("w:val"); | ||
} else { | ||
var outlineLvl = pPr.find("w\\:outlineLvl").attr("w:val"); | ||
if (!outlineLvl && styleId) outlineLvl = officeDocument.styles("w\\:style[w\\:styleId=\"" + styleId + "\"] w\\:outlineLvl").attr("w:val"); | ||
identity.level = parseInt(numPr.find("w\\:ilvl").attr("w:val") || 0); | ||
} | ||
if (styleId && styleId.startsWith("Heading")) { | ||
var outlineLvl = officeDocument.styles("w\\:style[w\\:styleId=\"" + styleId + "\"]").basest(":has(w\\:outlineLvl)").find("w\\:outlineLvl").attr("w:val"); | ||
if (outlineLvl) { | ||
identity.type = "heading"; | ||
identity.level = parseInt(outlineLvl) + 1; | ||
identity.outline = parseInt(outlineLvl) + 1; | ||
} | ||
@@ -378,2 +390,2 @@ } | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVueG1sL2RvY3gvb2ZmaWNlRG9jdW1lbnQuanMiXSwibmFtZXMiOlsiT2ZmaWNlRG9jdW1lbnQiLCJzdXBwb3J0ZWQiLCJzcGxpdCIsInJlbHMiLCJlYWNoIiwiaSIsInJlbCIsIiQiLCJ0eXBlIiwiYXR0ciIsInBvcCIsImluZGV4T2YiLCJ0YXJnZXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImdldFJlbE9iamVjdCIsImNyZWF0ZUVsZW1lbnQiLCJpZGVudGlmeSIsInN0eWxlcyIsIm51bWJlcmluZyIsInJlbmRlck5vZGUiLCJjb250ZW50IiwiZG9tSGFuZGxlciIsIm9mZmljZURvY3VtZW50IiwiZG9jIiwiYmluZCIsIl9pZGVudGlmeSIsIm1vZGVsIiwiYXJndW1lbnRzIiwiZW1pdCIsImRvY3VtZW50Iiwid1htbCIsInRhZyIsIm5hbWUiLCJpZGVudGl0aWVzIiwiY3VycmVudCIsImNoaWxkcmVuIiwic2VjdCIsImVuZCIsImNsb3Nlc3QiLCJwcmV2VW50aWwiLCJ0b0FycmF5IiwicmV2ZXJzZSIsImlzIiwicHVzaCIsInNlY3RQciIsImhmIiwiZmlsdGVyIiwiYSIsInJlZHVjZSIsImhlYWRlcnMiLCJzZXQiLCJhdHRyaWJzIiwiZ2V0UmVsIiwiTWFwIiwiZm9vdGVycyIsImhhc1RpdGxlUGFnZSIsImZpbmQiLCJwIiwiaWRlbnRpdHkiLCJwciIsInBQciIsImxlbmd0aCIsInN0eWxlSWQiLCJudW1QciIsIm51bUlkIiwibGV2ZWwiLCJvdXRsaW5lTHZsIiwicGFyc2VJbnQiLCJyIiwiZmxkQ2hhciIsImlubGluZSIsImFuY2hvciIsImdyYXBoaWNEYXRhIiwicGljIiwiYmxpcCIsInJpZCIsIndzcCIsIkZhbGxiYWNrIiwic2R0IiwiZWxCaW5kaW5nIiwicGF0aCIsImQiLCJ2YWx1ZSIsInRleHQiLCJwckNoaWxkcmVuIiwiZWxUeXBlIiwic2VsZWN0ZWQiLCJvcHRpb25zIiwibWFwIiwibGkiLCJkaXNwbGF5VGV4dCIsIm5zIiwiY2hlY2tlZCIsIkRhdGUiLCJmb3JtYXQiLCJsb2NhbGUiLCJoeXBlcmxpbmsiLCJ1cmwiLCJ0YmwiLCJzdGF0ZSIsIm5vZGUiLCJjb2xzIiwidHIiLCJpc0hlYWRlciIsInRjIiwiYWx0Q2h1bmsiLCJySWQiLCJkYXRhIiwicGFydE5hbWUiLCJmb2xkZXIiLCJjb250ZW50VHlwZSIsImNvbnRlbnRUeXBlcyIsImRvY0RlZmF1bHRzIiwic3R5bGUiLCJpZCIsImFic3RyYWN0TnVtIiwibnVtIiwibGF0ZW50U3R5bGVzIiwib2JqZWN0Iiwib2xlIiwiZW1iZWQiLCJwcm9nIiwiZ2V0UmVsT2xlT2JqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0lBRWFBLGMsV0FBQUEsYzs7Ozs7Ozs7Ozs7MEJBQ0w7QUFBQTs7QUFDTjtBQUNBLE9BQU1DLFlBQVUsa0NBQWtDQyxLQUFsQyxDQUF3QyxHQUF4QyxDQUFoQjtBQUNBLFFBQUtDLElBQUwsbUNBQTBDQyxJQUExQyxDQUErQyxVQUFDQyxDQUFELEVBQUdDLEdBQUgsRUFBUztBQUN2RCxRQUFJQyxJQUFFLE9BQUtKLElBQUwsQ0FBVUcsR0FBVixDQUFOO0FBQ0EsUUFBSUUsT0FBS0QsRUFBRUUsSUFBRixDQUFPLE1BQVAsRUFBZVAsS0FBZixDQUFxQixHQUFyQixFQUEwQlEsR0FBMUIsRUFBVDtBQUNBLFFBQUdULFVBQVVVLE9BQVYsQ0FBa0JILElBQWxCLEtBQXlCLENBQUMsQ0FBN0IsRUFBK0I7QUFBQTtBQUM5QixVQUFJSSxTQUFPTCxFQUFFRSxJQUFGLENBQU8sUUFBUCxDQUFYO0FBQ0FJLGFBQU9DLGNBQVAsU0FBMkJOLElBQTNCLEVBQWdDO0FBQy9CTyxVQUQrQixpQkFDMUI7QUFDSixlQUFPLEtBQUtDLFlBQUwsQ0FBa0JKLE1BQWxCLENBQVA7QUFDQTtBQUg4QixPQUFoQztBQUY4QjtBQU85QjtBQUNELElBWEQ7QUFZQTs7O3lCQUVNSyxhLEVBQWdEO0FBQUEsT0FBakNDLFFB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TkksRUF3TkM7QUFDaEIsU0FBTyxFQUFDeEIsTUFBSyxhQUFOLEVBQW9CNEcsSUFBR3BGLEtBQUtxQixPQUFMLENBQWEsaUJBQWIsQ0FBdkIsRUFBUDtBQUNBLEVBMU5lO0FBMk5oQmlFLElBM05nQixlQTJOWnRGLElBM05ZLEVBMk5QO0FBQ1IsU0FBTyxFQUFDeEIsTUFBSyxLQUFOLEVBQVk0RyxJQUFHcEYsS0FBS3FCLE9BQUwsQ0FBYSxTQUFiLENBQWYsRUFBdUNnRSxhQUFZckYsS0FBS0ssUUFBTCxDQUFjcUIsSUFBZCxDQUFtQjtBQUFBLFdBQUdULEVBQUVmLElBQUYsSUFBUSxpQkFBWDtBQUFBLElBQW5CLEVBQWlEbUIsT0FBakQsQ0FBeUQsT0FBekQsQ0FBbkQsRUFBUDtBQUNBLEVBN05lO0FBOE5oQmtFLGFBOU5nQiwwQkE4TkY7QUFDYixTQUFPLElBQVA7QUFDQSxFQWhPZTtBQWlPaEJDLE9Bak9nQixrQkFpT1R4RixJQWpPUyxFQWlPSlIsY0FqT0ksRUFpT1c7QUFDMUIsTUFBSWlHLE1BQUlqRyxlQUFlRixPQUFmLENBQXVCVSxJQUF2QixFQUE2QjBCLElBQTdCLENBQWtDLGVBQWxDLENBQVI7QUFDQSxNQUFJbEQsT0FBS2lILElBQUloSCxJQUFKLENBQVMsUUFBVCxDQUFUO0FBQ0EsTUFBSWlILFFBQU1ELElBQUloSCxJQUFKLENBQVMsTUFBVCxNQUFtQixPQUE3QjtBQUNBLE1BQUltRyxNQUFJYSxJQUFJaEgsSUFBSixDQUFTLE1BQVQsQ0FBUjtBQUNBLFNBQU8sRUFBQ0QsTUFBSyxRQUFOLEVBQWVrSCxZQUFmLEVBQXNCQyxNQUFNbkgsSUFBNUIsRUFBa0NxRyxNQUFLckYsZUFBZW9HLGVBQWYsQ0FBK0JoQixHQUEvQixDQUF2QyxFQUFQO0FBQ0E7QUF2T2UsQ0FBakIiLCJmaWxlIjoib2ZmaWNlRG9jdW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFydCBmcm9tIFwiLi4vcGFydFwiXHJcblxyXG5leHBvcnQgY2xhc3MgT2ZmaWNlRG9jdW1lbnQgZXh0ZW5kcyBQYXJ0e1xyXG5cdF9pbml0KCl7XHJcblx0XHRzdXBlci5faW5pdCgpXHJcblx0XHRjb25zdCBzdXBwb3J0ZWQ9XCJzdHlsZXMsbnVtYmVyaW5nLHRoZW1lLHNldHRpbmdzXCIuc3BsaXQoXCIsXCIpXHJcblx0XHR0aGlzLnJlbHMoYFJlbGF0aW9uc2hpcFtUYXJnZXQkPVwiLnhtbFwiXWApLmVhY2goKGkscmVsKT0+e1xyXG5cdFx0XHRsZXQgJD10aGlzLnJlbHMocmVsKVxyXG5cdFx0XHRsZXQgdHlwZT0kLmF0dHIoXCJUeXBlXCIpLnNwbGl0KFwiL1wiKS5wb3AoKVxyXG5cdFx0XHRpZihzdXBwb3J0ZWQuaW5kZXhPZih0eXBlKSE9LTEpe1xyXG5cdFx0XHRcdGxldCB0YXJnZXQ9JC5hdHRyKFwiVGFyZ2V0XCIpXHJcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdHlwZSx7XHJcblx0XHRcdFx0XHRnZXQoKXtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0UmVsT2JqZWN0KHRhcmdldClcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0cmVuZGVyKGNyZWF0ZUVsZW1lbnQsIGlkZW50aWZ5PU9mZmljZURvY3VtZW50LmlkZW50aWZ5KXtcclxuXHRcdGxldCBzdHlsZXMsIG51bWJlcmluZ1xyXG5cdFx0aWYodGhpcy5zdHlsZXMpXHJcblx0XHRcdHN0eWxlcz10aGlzLnJlbmRlck5vZGUodGhpcy5zdHlsZXMoXCJ3XFxcXDpzdHlsZXNcIikuZ2V0KDApLGNyZWF0ZUVsZW1lbnQsaWRlbnRpZnkpXHJcblx0XHRpZih0aGlzLm51bWJlcmluZylcclxuXHRcdFx0bnVtYmVyaW5nPXRoaXMucmVuZGVyTm9kZSh0aGlzLm51bWJlcmluZyhcIndcXFxcOm51bWJlcmluZ1wiKS5nZXQoMCksY3JlYXRlRWxlbWVudCxpZGVudGlmeSlcclxuXHRcdHJldHVybiB0aGlzLnJlbmRlck5vZGUodGhpcy5jb250ZW50KFwid1xcXFw6ZG9jdW1lbnRcIikuZ2V0KDApLGNyZWF0ZUVsZW1lbnQsIGlkZW50aWZ5LCB7c3R5bGVzLG51bWJlcmluZ30pXHJcblx0fVxyXG5cclxuXHRwYXJzZShkb21IYW5kbGVyLGlkZW50aWZ5PW9mZmljZURvY3VtZW50LmlkZW50aWZ5KXtcclxuXHRcdGNvbnN0IGRvYz17fVxyXG5cdFx0Y29uc3QgY3JlYXRlRWxlbWVudD1kb21IYW5kbGVyLmNyZWF0ZUVsZW1lbnQuYmluZChkb21IYW5kbGVyKVxyXG5cdFx0ZnVuY3Rpb24gX2lkZW50aWZ5KCl7XHJcblx0XHRcdGxldCBtb2RlbD1pZGVudGlmeSguLi5hcmd1bWVudHMpXHJcblx0XHRcdGlmKG1vZGVsICYmIHR5cGVvZihtb2RlbCk9PVwib2JqZWN0XCIpe1xyXG5cdFx0XHRcdGRvbUhhbmRsZXIuZW1pdChcIipcIixtb2RlbCwuLi5hcmd1bWVudHMpXHJcblx0XHRcdFx0ZG9tSGFuZGxlci5lbWl0KG1vZGVsLnR5cGUsIG1vZGVsLC4uLmFyZ3VtZW50cylcclxuXHRcdFx0XHRpZihkb21IYW5kbGVyW2BvbiR7bW9kZWwudHlwZX1gXSlcclxuXHRcdFx0XHRcdGRvbUhhbmRsZXJbYG9uJHttb2RlbC50eXBlfWBdKG1vZGVsLC4uLmFyZ3VtZW50cylcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gbW9kZWxcclxuXHRcdH1cclxuXHJcblx0XHRpZih0aGlzLnN0eWxlcylcclxuXHRcdFx0ZG9jLnN0eWxlcz10aGlzLnJlbmRlck5vZGUodGhpcy5zdHlsZXMoXCJ3XFxcXDpzdHlsZXNcIikuZ2V0KDApLGNyZWF0ZUVsZW1lbnQsX2lkZW50aWZ5KVxyXG5cdFx0aWYodGhpcy5udW1iZXJpbmcpXHJcblx0XHRcdGRvYy5udW1iZXJpbmc9dGhpcy5yZW5kZXJOb2RlKHRoaXMubnVtYmVyaW5nKFwid1xcXFw6bnVtYmVyaW5nXCIpLmdldCgwKSxjcmVhdGVFbGVtZW50LF9pZGVudGlmeSlcclxuXHRcdGRvYy5kb2N1bWVudD10aGlzLnJlbmRlck5vZGUodGhpcy5jb250ZW50KFwid1xcXFw6ZG9jdW1lbnRcIikuZ2V0KDApLGNyZWF0ZUVsZW1lbnQsX2lkZW50aWZ5KVxyXG5cdFx0cmV0dXJuIGRvY1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGlkZW50aWZ5KHdYbWwsIG9mZmljZURvY3VtZW50KXtcclxuXHRcdGNvbnN0IHRhZz13WG1sLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpXHJcblx0XHRpZihpZGVudGl0aWVzW3RhZ10pXHJcblx0XHRcdHJldHVybiBpZGVudGl0aWVzW3RhZ10oLi4uYXJndW1lbnRzKVxyXG5cclxuXHRcdHJldHVybiB0YWdcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE9mZmljZURvY3VtZW50XHJcblxyXG5jb25zdCBpZGVudGl0aWVzPXtcclxuXHRkb2N1bWVudCh3WG1sLG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCAkPW9mZmljZURvY3VtZW50LmNvbnRlbnRcclxuXHRcdGxldCBjdXJyZW50PW51bGxcclxuXHRcdGxldCBjaGlsZHJlbj0kKFwid1xcXFw6c2VjdFByXCIpLmVhY2goKGksc2VjdCk9PntcclxuXHRcdFx0bGV0IGVuZD0kKHNlY3QpLmNsb3Nlc3QoJ3dcXFxcOmJvZHk+KicpXHJcblx0XHRcdHNlY3QuY29udGVudD1lbmQucHJldlVudGlsKGN1cnJlbnQpLnRvQXJyYXkoKS5yZXZlcnNlKClcclxuXHRcdFx0aWYoIWVuZC5pcyhzZWN0KSlcclxuXHRcdFx0XHRzZWN0LmNvbnRlbnQucHVzaChlbmQuZ2V0KDApKVxyXG5cdFx0XHRjdXJyZW50PWVuZFxyXG5cdFx0fSkudG9BcnJheSgpXHJcblx0XHRyZXR1cm4ge3R5cGU6XCJkb2N1bWVudFwiLCBjaGlsZHJlbn1cclxuXHR9LFxyXG5cdHNlY3RQcih3WG1sLG9mZmljZURvY3VtZW50KXtcclxuXHRcdGNvbnN0IGhmPXR5cGU9PndYbWwuY2hpbGRyZW4uZmlsdGVyKGE9PmEubmFtZT09YHc6JHt0eXBlfVJlZmVyZW5jZWApLnJlZHVjZSgoaGVhZGVycyxhKT0+e1xyXG5cdFx0XHRcdGhlYWRlcnMuc2V0KGEuYXR0cmlic1tcInc6dHlwZVwiXSxvZmZpY2VEb2N1bWVudC5nZXRSZWwoYS5hdHRyaWJzW1wicjppZFwiXSkpXHJcblx0XHRcdFx0cmV0dXJuIGhlYWRlcnNcclxuXHRcdFx0fSxuZXcgTWFwKCkpXHJcblxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0dHlwZTpcInNlY3Rpb25cIixcclxuXHRcdFx0Y2hpbGRyZW46d1htbC5jb250ZW50LFxyXG5cdFx0XHRoZWFkZXJzOmhmKFwiaGVhZGVyXCIpLFxyXG5cdFx0XHRmb290ZXJzOmhmKFwiZm9vdGVyXCIpLFxyXG5cdFx0XHRoYXNUaXRsZVBhZ2U6ICEhd1htbC5jaGlsZHJlbi5maW5kKGE9PmEubmFtZT09XCJ3OnRpdGxlUGdcIilcclxuXHRcdH1cclxuXHR9LFxyXG5cdHAod1htbCxvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgJD1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpXHJcblx0XHRsZXQgdHlwZT1cInBcIlxyXG5cclxuXHRcdGxldCBpZGVudGl0eT17dHlwZSxwcjp3WG1sLmNoaWxkcmVuLmZpbmQoKHtuYW1lfSk9Pm5hbWU9PVwidzpwUHJcIiksY2hpbGRyZW46d1htbC5jaGlsZHJlbi5maWx0ZXIoKHtuYW1lfSk9Pm5hbWUhPVwidzpwUHJcIil9XHJcblxyXG5cdFx0bGV0IHBQcj0kLmZpbmQoXCJ3XFxcXDpwUHJcIilcclxuXHRcdGlmKHBQci5sZW5ndGgpe1xyXG5cdFx0XHRsZXQgc3R5bGVJZD1wUHIuZmluZChcIndcXFxcOnBTdHlsZVwiKS5hdHRyKFwidzp2YWxcIilcclxuXHJcblx0XHRcdGxldCBudW1Qcj1wUHIuZmluZChcIndcXFxcOm51bVByPndcXFxcOm51bUlkXCIpXHJcblx0XHRcdGlmKCFudW1Qci5sZW5ndGggJiYgc3R5bGVJZCl7XHJcblx0XHRcdFx0bnVtUHI9b2ZmaWNlRG9jdW1lbnQuc3R5bGVzKGB3XFxcXDpzdHlsZVt3XFxcXDpzdHlsZUlkPVwiJHtzdHlsZUlkfVwiXSB3XFxcXDpudW1Qcj53XFxcXDpudW1JZGApXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmKG51bVByLmxlbmd0aCl7XHJcblx0XHRcdFx0aWRlbnRpdHkudHlwZT1cImxpc3RcIlxyXG5cdFx0XHRcdGlkZW50aXR5Lm51bUlkPW51bVByLmZpbmQoXCJ3XFxcXDpudW1JZFwiKS5hdHRyKFwidzp2YWxcIilcclxuXHRcdFx0XHRpZGVudGl0eS5sZXZlbD1udW1Qci5maW5kKFwid1xcXFw6aWx2bFwiKS5hdHRyKFwidzp2YWxcIilcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0bGV0IG91dGxpbmVMdmw9cFByLmZpbmQoXCJ3XFxcXDpvdXRsaW5lTHZsXCIpLmF0dHIoXCJ3OnZhbFwiKVxyXG5cdFx0XHRcdGlmKCFvdXRsaW5lTHZsICYmIHN0eWxlSWQpXHJcblx0XHRcdFx0XHRvdXRsaW5lTHZsPW9mZmljZURvY3VtZW50LnN0eWxlcyhgd1xcXFw6c3R5bGVbd1xcXFw6c3R5bGVJZD1cIiR7c3R5bGVJZH1cIl0gd1xcXFw6b3V0bGluZUx2bGApLmF0dHIoXCJ3OnZhbFwiKVxyXG5cclxuXHRcdFx0XHRpZihvdXRsaW5lTHZsKXtcclxuXHRcdFx0XHRcdGlkZW50aXR5LnR5cGU9XCJoZWFkaW5nXCJcclxuXHRcdFx0XHRcdGlkZW50aXR5LmxldmVsPXBhcnNlSW50KG91dGxpbmVMdmwpKzFcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gaWRlbnRpdHlcclxuXHR9LFxyXG5cdHIod1htbCl7XHJcblx0XHRyZXR1cm4ge3R5cGU6XCJyXCIsIHByOiB3WG1sLmNoaWxkcmVuLmZpbmQoKHtuYW1lfSk9Pm5hbWU9PVwidzpyUHJcIiksIGNoaWxkcmVuOiB3WG1sLmNoaWxkcmVuLmZpbHRlcigoe25hbWV9KT0+bmFtZSE9XCJ3OnJQclwiKX1cclxuXHR9LFxyXG5cdGZsZENoYXIod1htbCl7XHJcblx0XHRyZXR1cm4gd1htbC5hdHRyaWJzW1widzpmbGRDaGFyVHlwZVwiXVxyXG5cdH0sXHJcblxyXG5cdGlubGluZSh3WG1sLG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCAkPW9mZmljZURvY3VtZW50LmNvbnRlbnQod1htbClcclxuXHRcdHJldHVybiB7dHlwZTpgZHJhd2luZy5pbmxpbmVgLCBjaGlsZHJlbjokLmZpbmQoJ2FcXFxcOmdyYXBoaWM+YVxcXFw6Z3JhcGhpY0RhdGEnKS5jaGlsZHJlbigpLnRvQXJyYXkoKX1cclxuXHR9LFxyXG5cdGFuY2hvcih3WG1sLCBvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgJD1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpXHJcblx0XHRsZXQgZ3JhcGhpY0RhdGE9JC5maW5kKCdhXFxcXDpncmFwaGljPmFcXFxcOmdyYXBoaWNEYXRhJylcclxuXHRcdGxldCB0eXBlPWdyYXBoaWNEYXRhLmF0dHIoXCJ1cmlcIikuc3BsaXQoXCIvXCIpLnBvcCgpXHJcblx0XHRsZXQgY2hpbGRyZW49Z3JhcGhpY0RhdGEuY2hpbGRyZW4oKS50b0FycmF5KClcclxuXHRcdGlmKHR5cGU9PVwid29yZHByb2Nlc3NpbmdHcm91cFwiKVxyXG5cdFx0XHRjaGlsZHJlbj1jaGlsZHJlblswXS5jaGlsZHJlbi5maWx0ZXIoYT0+YS5uYW1lLnNwbGl0KFwiOlwiKVswXSE9XCJ3cGdcIilcclxuXHJcblx0XHRyZXR1cm4ge3R5cGU6XCJkcmF3aW5nLmFuY2hvclwiLGNoaWxkcmVufVxyXG5cdH0sXHJcblx0cGljKHdYbWwsIG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCBibGlwPW9mZmljZURvY3VtZW50LmNvbnRlbnQod1htbCkuZmluZChcImFcXFxcOmJsaXBcIilcclxuXHRcdGxldCByaWQ9YmxpcC5hdHRyKCdyOmVtYmVkJyl8fGJsaXAuYXR0cigncjpsaW5rJylcclxuXHRcdHJldHVybiB7dHlwZTpcInBpY3R1cmVcIiwuLi5vZmZpY2VEb2N1bWVudC5nZXRSZWwocmlkKX1cclxuXHR9LFxyXG5cdHdzcCh3WG1sLCBvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRyZXR1cm4ge3R5cGU6XCJzaGFwZVwiLCBjaGlsZHJlbjpvZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpLmZpbmQoXCI+d3BzXFxcXDp0eGJ4PndcXFxcOnR4YnhDb250ZW50XCIpLmNoaWxkcmVuKCkudG9BcnJheSgpfVxyXG5cdH0sXHJcblx0RmFsbGJhY2soKXtcclxuXHRcdHJldHVybiBudWxsXHJcblx0fSxcclxuXHRzZHQod1htbCxvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgJD1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpXHJcblx0XHRsZXQgcHI9JC5maW5kKCc+d1xcXFw6c2R0UHInKVxyXG5cdFx0bGV0IGNvbnRlbnQ9JC5maW5kKCc+d1xcXFw6c2R0Q29udGVudCcpXHJcblx0XHRsZXQgY2hpbGRyZW49Y29udGVudC5jaGlsZHJlbigpLnRvQXJyYXkoKVxyXG5cclxuXHRcdGxldCBlbEJpbmRpbmc9cHIuZmluZCgnd1xcXFw6ZGF0YUJpbmRpbmcnKS5nZXQoMClcclxuXHRcdGlmKGVsQmluZGluZyl7Ly9wcm9wZXJ0aWVzXHJcblx0XHRcdGxldCBwYXRoPWVsQmluZGluZy5hdHRyaWJzWyd3OnhwYXRoJ10sXHJcblx0XHRcdFx0ZD1wYXRoLnNwbGl0KC9bXFwvXFw6XFxbXS8pLFxyXG5cdFx0XHRcdG5hbWU9KGQucG9wKCksZC5wb3AoKSk7XHJcblx0XHRcdGxldCB2YWx1ZT1jb250ZW50LnRleHQoKVxyXG5cclxuXHRcdFx0cmV0dXJuIHt0eXBlOlwicHJvcGVydHlcIiwgbmFtZSwgdmFsdWUsIGNoaWxkcmVufVxyXG5cdFx0fWVsc2V7Ly9jb250cm9sc1xyXG5cdFx0XHRsZXQgcHJDaGlsZHJlbj1wci5nZXQoMCkuY2hpbGRyZW5cclxuXHRcdFx0bGV0IGVsVHlwZT1wckNoaWxkcmVuW3ByQ2hpbGRyZW4ubGVuZ3RoLTFdXHJcblx0XHRcdGxldCBuYW1lPWVsVHlwZS5uYW1lLnNwbGl0KFwiOlwiKS5wb3AoKVxyXG5cdFx0XHRsZXQgdHlwZT1cInRleHQscGljdHVyZSxkb2NQYXJ0TGlzdCxjb21ib0JveCxkcm9wRG93bkxpc3QsZGF0ZSxjaGVja2JveCxyZXBlYXRpbmdTZWN0aW9uLHJlcGVhdGluZ1NlY3Rpb25JdGVtXCIuc3BsaXQoXCIsXCIpXHJcblx0XHRcdFx0LmZpbmQoYT0+YT09bmFtZSlcclxuXHRcdFx0bGV0IG1vZGVsPXtjaGlsZHJlbn1cclxuXHRcdFx0aWYodHlwZSl7XHJcblx0XHRcdFx0bW9kZWwudHlwZT1gY29udHJvbC4ke3R5cGV9YFxyXG5cdFx0XHR9ZWxzZXsvL2NvbnRhaW5lclxyXG5cdFx0XHRcdGlmKGNvbnRlbnQuZmluZChcIndcXFxcOnAsd1xcXFw6dGJsLHdcXFxcOnRyLHdcXFxcOnRjXCIpLmxlbmd0aCl7XHJcblx0XHRcdFx0XHRtb2RlbC50eXBlPVwiYmxvY2tcIlxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0bW9kZWwudHlwZT1cImlubGluZVwiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQkPW9mZmljZURvY3VtZW50LmNvbnRlbnRcclxuXHRcdFx0c3dpdGNoKG1vZGVsLnR5cGUpe1xyXG5cdFx0XHRcdGNhc2UgXCJjb250cm9sLmRyb3BEb3duTGlzdFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJjb250cm9sLmNvbWJvQm94XCI6e1xyXG5cdFx0XHRcdFx0bGV0IHNlbGVjdGVkPSQoY29udGVudCkudGV4dCgpXHJcblx0XHRcdFx0XHRtb2RlbC5vcHRpb25zPSQoZWxUeXBlKVxyXG5cdFx0XHRcdFx0XHQuZmluZChcIndcXFxcOmxpc3RJdGVtXCIpXHJcblx0XHRcdFx0XHRcdC5tYXAoKGksbGkpPT57XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRcdGRpc3BsYXlUZXh0OiBsaS5hdHRyaWJzW1widzpkaXNwbGF5VGV4dFwiXSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBsaS5hdHRyaWJzW1widzp2YWx1ZVwiXVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0LmdldCgpXHJcblx0XHRcdFx0XHRtb2RlbC52YWx1ZT0obW9kZWwub3B0aW9ucy5maW5kKGE9PmEuZGlzcGxheVRleHQ9PXNlbGVjdGVkKXx8e30pLnZhbHVlXHJcblx0XHRcdFx0XHRicmVha1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlIFwiY29udHJvbC5jaGVja2JveFwiOntcclxuXHRcdFx0XHRcdGxldCBucz1lbFR5cGUubmFtZS5zcGxpdChcIjpcIilbMF1cclxuXHRcdFx0XHRcdG1vZGVsLmNoZWNrZWQ9JChlbFR5cGUpLmZpbmQoYCR7bnN9XFxcXDpjaGVja2VkYCkuYXR0cihgJHtuc306dmFsYCk9PVwiMVwiXHJcblx0XHRcdFx0XHRicmVha1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlIFwiY29udHJvbC50ZXh0XCI6XHJcblx0XHRcdFx0XHRpZihjb250ZW50LmZpbmQoJ3dcXFxcOnIgW3dcXFxcOnZhbH49UGxhY2Vob2xkZXJdJykubGVuZ3RoPT0wKVxyXG5cdFx0XHRcdFx0XHRtb2RlbC52YWx1ZT1jb250ZW50LnRleHQoKVxyXG5cdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRjYXNlIFwiY29udHJvbC5kYXRlXCI6XHJcblx0XHRcdFx0XHRtb2RlbC52YWx1ZT1uZXcgRGF0ZSgkKGVsVHlwZSkuYXR0cihcInc6ZnVsbERhdGVcIikpXHJcblx0XHRcdFx0XHRtb2RlbC5mb3JtYXQ9JChlbFR5cGUpLmZpbmQoXCJ3XFxcXDpkYXRlRm9ybWF0XCIpLmF0dHIoXCJ3OnZhbFwiKVxyXG5cdFx0XHRcdFx0bW9kZWwubG9jYWxlPSQoZWxUeXBlKS5maW5kKFwid1xcXFw6bGlkXCIpLmF0dHIoXCJ3OnZhbFwiKVxyXG5cdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gbW9kZWxcclxuXHRcdH1cclxuXHR9LFxyXG5cdGh5cGVybGluayh3WG1sLG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCB1cmw9b2ZmaWNlRG9jdW1lbnQuZ2V0UmVsKHdYbWwuYXR0cmlic1tcInI6aWRcIl0pXHJcblx0XHRyZXR1cm4ge3R5cGU6XCJoeXBlcmxpbmtcIiwgdXJsfVxyXG5cdH0sXHJcblx0dGJsKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHdYbWwuY2hpbGRyZW4ucmVkdWNlKChzdGF0ZSxub2RlKT0+e1xyXG5cdFx0XHRzd2l0Y2gobm9kZS5uYW1lKXtcclxuXHRcdFx0Y2FzZSBcInc6dGJsUHJcIjpcclxuXHRcdFx0XHRzdGF0ZS5wcj1ub2RlXHJcblx0XHRcdGJyZWFrXHJcblx0XHRcdGNhc2UgXCJ3OnRibEdyaWRcIjpcclxuXHRcdFx0XHRzdGF0ZS5jb2xzPW5vZGUuY2hpbGRyZW5cclxuXHRcdFx0YnJlYWtcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRzdGF0ZS5jaGlsZHJlbi5wdXNoKG5vZGUpXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0XHR9LHt0eXBlOlwidGJsXCIsY2hpbGRyZW46W10scHI6bnVsbCxjb2xzOltdfSlcclxuXHR9LFxyXG5cdHRyKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHdYbWwuY2hpbGRyZW4ucmVkdWNlKChzdGF0ZSxub2RlKT0+e1xyXG5cdFx0XHRzd2l0Y2gobm9kZS5uYW1lKXtcclxuXHRcdFx0Y2FzZSBcInc6dHJQclwiOlxyXG5cdFx0XHRcdHN0YXRlLnByPW5vZGVcclxuXHRcdFx0XHRzdGF0ZS5pc0hlYWRlcj0hIW5vZGUuY2hpbGRyZW4uZmluZChhPT5hLm5hbWU9PVwidzp0YmxIZWFkZXJcIilcclxuXHRcdFx0YnJlYWtcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRzdGF0ZS5jaGlsZHJlbi5wdXNoKG5vZGUpXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0XHR9LHt0eXBlOlwidHJcIixjaGlsZHJlbjpbXSxwcjpudWxsfSlcclxuXHR9LFxyXG5cdHRjKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHdYbWwuY2hpbGRyZW4ucmVkdWNlKChzdGF0ZSxub2RlKT0+e1xyXG5cdFx0XHRzd2l0Y2gobm9kZS5uYW1lKXtcclxuXHRcdFx0Y2FzZSBcInc6dGNQclwiOlxyXG5cdFx0XHRcdHN0YXRlLnByPW5vZGVcclxuXHRcdFx0YnJlYWtcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRzdGF0ZS5jaGlsZHJlbi5wdXNoKG5vZGUpXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0XHR9LHt0eXBlOlwidGNcIixjaGlsZHJlbjpbXSxwcjpudWxsfSlcclxuXHR9LFxyXG5cdGFsdENodW5rKHdYbWwsIG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCBySWQ9d1htbC5hdHRyaWJzWydyOmlkJ11cclxuXHRcdGxldCBkYXRhPW9mZmljZURvY3VtZW50LmdldFJlbChySWQpXHJcblxyXG5cdFx0bGV0IHBhcnROYW1lPW9mZmljZURvY3VtZW50LmZvbGRlcitvZmZpY2VEb2N1bWVudC5yZWxzKGBbSWQ9JHtySWR9XWApLmF0dHIoXCJUYXJnZXRcIilcclxuXHRcdGxldCBjb250ZW50VHlwZT1vZmZpY2VEb2N1bWVudC5kb2MuY29udGVudFR5cGVzKGBPdmVycmlkZVtQYXJ0TmFtZT0nJHtwYXJ0TmFtZX0nXWApLmF0dHIoXCJDb250ZW50VHlwZVwiKVxyXG5cdFx0cmV0dXJuIHt0eXBlOlwiY2h1bmtcIiwgZGF0YSwgY29udGVudFR5cGV9XHJcblx0fSxcclxuXHRkb2NEZWZhdWx0cyh3WG1sKXtcclxuXHRcdHJldHVybiB7dHlwZTpcInN0eWxlXCJ9XHJcblx0fSxcclxuXHRzdHlsZSh3WG1sKXtcclxuXHRcdHJldHVybiB7dHlwZTpcInN0eWxlXCIsIGlkOndYbWwuYXR0cmlic1sndzpzdHlsZUlkJ119XHJcblx0fSxcclxuXHRhYnN0cmFjdE51bSh3WG1sKXtcclxuXHRcdHJldHVybiB7dHlwZTpcImFic3RyYWN0TnVtXCIsaWQ6d1htbC5hdHRyaWJzW1widzphYnN0cmFjdE51bUlkXCJdfVxyXG5cdH0sXHJcblx0bnVtKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHt0eXBlOlwibnVtXCIsaWQ6d1htbC5hdHRyaWJzW1widzpudW1JZFwiXSxhYnN0cmFjdE51bTp3WG1sLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lPT1cInc6YWJzdHJhY3ROdW1JZFwiKS5hdHRyaWJzW1widzp2YWxcIl19XHJcblx0fSxcclxuXHRsYXRlbnRTdHlsZXMoKXtcclxuXHRcdHJldHVybiBudWxsXHJcblx0fSxcclxuXHRvYmplY3Qod1htbCxvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgb2xlPW9mZmljZURvY3VtZW50LmNvbnRlbnQod1htbCkuZmluZChcIm9cXFxcOk9MRU9iamVjdFwiKVxyXG5cdFx0bGV0IHR5cGU9b2xlLmF0dHIoXCJQcm9nSURcIilcclxuXHRcdGxldCBlbWJlZD1vbGUuYXR0cihcIlR5cGVcIik9PT1cIkVtYmVkXCJcclxuXHRcdGxldCBySWQ9b2xlLmF0dHIoXCJyOmlkXCIpXHJcblx0XHRyZXR1cm4ge3R5cGU6XCJvYmplY3RcIixlbWJlZCwgcHJvZzogdHlwZSwgZGF0YTpvZmZpY2VEb2N1bWVudC5nZXRSZWxPbGVPYmplY3QocklkKX1cclxuXHR9XHJcbn1cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVueG1sL2RvY3gvb2ZmaWNlRG9jdW1lbnQuanMiXSwibmFtZXMiOlsiT2ZmaWNlRG9jdW1lbnQiLCJzdXBwb3J0ZWQiLCJzcGxpdCIsInJlbHMiLCJlYWNoIiwiaSIsInJlbCIsIiQiLCJ0eXBlIiwiYXR0ciIsInBvcCIsImluZGV4T2YiLCJ0YXJnZXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImdldFJlbE9iamVjdCIsInN0eWxlcyIsInByb3RvdHlwZSIsImJhc2VzdCIsInNlbGVjdG9yIiwiY3VycmVudCIsImxlbmd0aCIsImlzIiwicm9vdCIsImZpbmQiLCJjaGlsZHJlbiIsIm5vdCIsImNyZWF0ZUVsZW1lbnQiLCJpZGVudGlmeSIsIm51bWJlcmluZyIsInJlbmRlck5vZGUiLCJjb250ZW50IiwiZG9tSGFuZGxlciIsIm9mZmljZURvY3VtZW50IiwiZG9jIiwiYmluZCIsIl9pZGVudGlmeSIsIm1vZGVsIiwiYXJndW1lbnRzIiwiZW1pdCIsImRvY3VtZW50Iiwid1htbCIsInRhZyIsIm5hbWUiLCJpZGVudGl0aWVzIiwic2VjdCIsImVuZCIsImNsb3Nlc3QiLCJwcmV2VW50aWwiLCJ0b0FycmF5IiwicmV2ZXJzZSIsInB1c2giLCJzZWN0UHIiLCJoZiIsImZpbHRlciIsImEiLCJyZWR1Y2UiLCJoZWFkZXJzIiwic2V0IiwiYXR0cmlicyIsImdldFJlbCIsIk1hcCIsImZvb3RlcnMiLCJoYXNUaXRsZVBhZ2UiLCJwIiwiaWRlbnRpdHkiLCJwciIsInBQciIsInN0eWxlSWQiLCJudW1QciIsIm51bUlkIiwibGV2ZWwiLCJwYXJzZUludCIsInN0YXJ0c1dpdGgiLCJvdXRsaW5lTHZsIiwib3V0bGluZSIsInIiLCJmbGRDaGFyIiwiaW5saW5lIiwiYW5jaG9yIiwiZ3JhcGhpY0RhdGEiLCJwaWMiLCJibGlwIiwicmlkIiwid3NwIiwiRmFsbGJhY2siLCJzZHQiLCJlbEJpbmRpbmciLCJwYXRoIiwiZCIsInZhbHVlIiwidGV4dCIsInByQ2hpbGRyZW4iLCJlbFR5cGUiLCJzZWxlY3RlZCIsIm9wdGlvbnMiLCJtYXAiLCJsaSIsImRpc3BsYXlUZXh0IiwibnMiLCJjaGVja2VkIiwiRGF0ZSIsImZvcm1hdCIsImxvY2FsZSIsImh5cGVybGluayIsInVybCIsInRibCIsInN0YXRlIiwibm9kZSIsImNvbHMiLCJ0ciIsImlzSGVhZGVyIiwidGMiLCJhbHRDaHVuayIsInJJZCIsImRhdGEiLCJwYXJ0TmFtZSIsImZvbGRlciIsImNvbnRlbnRUeXBlIiwiY29udGVudFR5cGVzIiwiZG9jRGVmYXVsdHMiLCJzdHlsZSIsImlkIiwiYWJzdHJhY3ROdW0iLCJudW0iLCJsYXRlbnRTdHlsZXMiLCJvYmplY3QiLCJvbGUiLCJlbWJlZCIsInByb2ciLCJnZXRSZWxPbGVPYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7SUFFYUEsYyxXQUFBQSxjOzs7Ozs7Ozs7OzswQkFDTDtBQUFBOztBQUNOO0FBQ0EsT0FBTUMsWUFBVSxrQ0FBa0NDLEtBQWxDLENBQXdDLEdBQXhDLENBQWhCO0FBQ0EsUUFBS0MsSUFBTCxtQ0FBMENDLElBQTFDLENBQStDLFVBQUNDLENBQUQsRUFBR0MsR0FBSCxFQUFTO0FBQ3ZELFFBQUlDLElBQUUsT0FBS0osSUFBTCxDQUFVRyxHQUFWLENBQU47QUFDQSxRQUFJRSxPQUFLRCxFQUFFRSxJQUFGLENBQU8sTUFBUCxFQUFlUCxLQUFmLENBQXFCLEdBQXJCLEVBQTBCUSxHQUExQixFQUFUO0FBQ0EsUUFBR1QsVUFBVVUsT0FBVixDQUFrQkgsSUFBbEIsS0FBeUIsQ0FBQyxDQUE3QixFQUErQjtBQUFBO0FBQzlCLFVBQUlJLFNBQU9MLEVBQUVFLElBQUYsQ0FBTyxRQUFQLENBQVg7QUFDQUksYUFBT0MsY0FBUCxTQUEyQk4sSUFBM0IsRUFBZ0M7QUFDL0JPLFVBRCtCLGlCQUMxQjtBQUNKLGVBQU8sS0FBS0MsWUFBTCxDQUFrQkosTUFBbEIsQ0FBUDtBQUNBO0FB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LFNBQU8sSUFBUDtBQUNBLEVBdE9lO0FBdU9oQkMsT0F2T2dCLGtCQXVPVHJGLElBdk9TLEVBdU9KUixjQXZPSSxFQXVPVztBQUMxQixNQUFJOEYsTUFBSTlGLGVBQWVGLE9BQWYsQ0FBdUJVLElBQXZCLEVBQTZCakIsSUFBN0IsQ0FBa0MsZUFBbEMsQ0FBUjtBQUNBLE1BQUlqQixPQUFLd0gsSUFBSXZILElBQUosQ0FBUyxRQUFULENBQVQ7QUFDQSxNQUFJd0gsUUFBTUQsSUFBSXZILElBQUosQ0FBUyxNQUFULE1BQW1CLE9BQTdCO0FBQ0EsTUFBSTBHLE1BQUlhLElBQUl2SCxJQUFKLENBQVMsTUFBVCxDQUFSO0FBQ0EsU0FBTyxFQUFDRCxNQUFLLFFBQU4sRUFBZXlILFlBQWYsRUFBc0JDLE1BQU0xSCxJQUE1QixFQUFrQzRHLE1BQUtsRixlQUFlaUcsZUFBZixDQUErQmhCLEdBQS9CLENBQXZDLEVBQVA7QUFDQTtBQTdPZSxDQUFqQiIsImZpbGUiOiJvZmZpY2VEb2N1bWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJ0IGZyb20gXCIuLi9wYXJ0XCJcclxuXHJcbmV4cG9ydCBjbGFzcyBPZmZpY2VEb2N1bWVudCBleHRlbmRzIFBhcnR7XHJcblx0X2luaXQoKXtcclxuXHRcdHN1cGVyLl9pbml0KClcclxuXHRcdGNvbnN0IHN1cHBvcnRlZD1cInN0eWxlcyxudW1iZXJpbmcsdGhlbWUsc2V0dGluZ3NcIi5zcGxpdChcIixcIilcclxuXHRcdHRoaXMucmVscyhgUmVsYXRpb25zaGlwW1RhcmdldCQ9XCIueG1sXCJdYCkuZWFjaCgoaSxyZWwpPT57XHJcblx0XHRcdGxldCAkPXRoaXMucmVscyhyZWwpXHJcblx0XHRcdGxldCB0eXBlPSQuYXR0cihcIlR5cGVcIikuc3BsaXQoXCIvXCIpLnBvcCgpXHJcblx0XHRcdGlmKHN1cHBvcnRlZC5pbmRleE9mKHR5cGUpIT0tMSl7XHJcblx0XHRcdFx0bGV0IHRhcmdldD0kLmF0dHIoXCJUYXJnZXRcIilcclxuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0eXBlLHtcclxuXHRcdFx0XHRcdGdldCgpe1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRSZWxPYmplY3QodGFyZ2V0KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblxyXG5cdFx0dmFyICQ9dGhpcy5zdHlsZXNcclxuXHRcdHRoaXMuc3R5bGVzLnByb3RvdHlwZS5iYXNlc3Q9ZnVuY3Rpb24oc2VsZWN0b3Ipe1xyXG5cdFx0XHRsZXQgY3VycmVudD10aGlzXHJcblx0XHRcdHdoaWxlKGN1cnJlbnQubGVuZ3RoPjApe1xyXG5cdFx0XHRcdGlmKGN1cnJlbnQuaXMoc2VsZWN0b3IpKXtcclxuXHRcdFx0XHRcdHJldHVybiAkKGN1cnJlbnQpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGN1cnJlbnQ9JC5yb290KCkuZmluZChgd1xcXFw6c3R5bGVbd1xcXFw6c3R5bGVJZD1cIiR7Y3VycmVudC5jaGlsZHJlbihcIndcXFxcOmJhc2VkT25cIikuYXR0cihcInc6dmFsXCIpfVwiXWApXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHRoaXMubm90KHRoaXMpXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZW5kZXIoY3JlYXRlRWxlbWVudCwgaWRlbnRpZnk9T2ZmaWNlRG9jdW1lbnQuaWRlbnRpZnkpe1xyXG5cdFx0bGV0IHN0eWxlcywgbnVtYmVyaW5nXHJcblx0XHRpZih0aGlzLnN0eWxlcylcclxuXHRcdFx0c3R5bGVzPXRoaXMucmVuZGVyTm9kZSh0aGlzLnN0eWxlcyhcIndcXFxcOnN0eWxlc1wiKS5nZXQoMCksY3JlYXRlRWxlbWVudCxpZGVudGlmeSlcclxuXHRcdGlmKHRoaXMubnVtYmVyaW5nKVxyXG5cdFx0XHRudW1iZXJpbmc9dGhpcy5yZW5kZXJOb2RlKHRoaXMubnVtYmVyaW5nKFwid1xcXFw6bnVtYmVyaW5nXCIpLmdldCgwKSxjcmVhdGVFbGVtZW50LGlkZW50aWZ5KVxyXG5cdFx0cmV0dXJuIHRoaXMucmVuZGVyTm9kZSh0aGlzLmNvbnRlbnQoXCJ3XFxcXDpkb2N1bWVudFwiKS5nZXQoMCksY3JlYXRlRWxlbWVudCwgaWRlbnRpZnksIHtzdHlsZXMsbnVtYmVyaW5nfSlcclxuXHR9XHJcblxyXG5cdHBhcnNlKGRvbUhhbmRsZXIsaWRlbnRpZnk9b2ZmaWNlRG9jdW1lbnQuaWRlbnRpZnkpe1xyXG5cdFx0Y29uc3QgZG9jPXt9XHJcblx0XHRjb25zdCBjcmVhdGVFbGVtZW50PWRvbUhhbmRsZXIuY3JlYXRlRWxlbWVudC5iaW5kKGRvbUhhbmRsZXIpXHJcblx0XHRmdW5jdGlvbiBfaWRlbnRpZnkoKXtcclxuXHRcdFx0bGV0IG1vZGVsPWlkZW50aWZ5KC4uLmFyZ3VtZW50cylcclxuXHRcdFx0aWYobW9kZWwgJiYgdHlwZW9mKG1vZGVsKT09XCJvYmplY3RcIil7XHJcblx0XHRcdFx0ZG9tSGFuZGxlci5lbWl0KFwiKlwiLG1vZGVsLC4uLmFyZ3VtZW50cylcclxuXHRcdFx0XHRkb21IYW5kbGVyLmVtaXQobW9kZWwudHlwZSwgbW9kZWwsLi4uYXJndW1lbnRzKVxyXG5cdFx0XHRcdGlmKGRvbUhhbmRsZXJbYG9uJHttb2RlbC50eXBlfWBdKVxyXG5cdFx0XHRcdFx0ZG9tSGFuZGxlcltgb24ke21vZGVsLnR5cGV9YF0obW9kZWwsLi4uYXJndW1lbnRzKVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBtb2RlbFxyXG5cdFx0fVxyXG5cclxuXHRcdGlmKHRoaXMuc3R5bGVzKVxyXG5cdFx0XHRkb2Muc3R5bGVzPXRoaXMucmVuZGVyTm9kZSh0aGlzLnN0eWxlcyhcIndcXFxcOnN0eWxlc1wiKS5nZXQoMCksY3JlYXRlRWxlbWVudCxfaWRlbnRpZnkpXHJcblx0XHRpZih0aGlzLm51bWJlcmluZylcclxuXHRcdFx0ZG9jLm51bWJlcmluZz10aGlzLnJlbmRlck5vZGUodGhpcy5udW1iZXJpbmcoXCJ3XFxcXDpudW1iZXJpbmdcIikuZ2V0KDApLGNyZWF0ZUVsZW1lbnQsX2lkZW50aWZ5KVxyXG5cdFx0ZG9jLmRvY3VtZW50PXRoaXMucmVuZGVyTm9kZSh0aGlzLmNvbnRlbnQoXCJ3XFxcXDpkb2N1bWVudFwiKS5nZXQoMCksY3JlYXRlRWxlbWVudCxfaWRlbnRpZnkpXHJcblx0XHRyZXR1cm4gZG9jXHJcblx0fVxyXG5cclxuXHRzdGF0aWMgaWRlbnRpZnkod1htbCwgb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0Y29uc3QgdGFnPXdYbWwubmFtZS5zcGxpdChcIjpcIikucG9wKClcclxuXHRcdGlmKGlkZW50aXRpZXNbdGFnXSlcclxuXHRcdFx0cmV0dXJuIGlkZW50aXRpZXNbdGFnXSguLi5hcmd1bWVudHMpXHJcblxyXG5cdFx0cmV0dXJuIHRhZ1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgT2ZmaWNlRG9jdW1lbnRcclxuXHJcbmNvbnN0IGlkZW50aXRpZXM9e1xyXG5cdGRvY3VtZW50KHdYbWwsb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0bGV0ICQ9b2ZmaWNlRG9jdW1lbnQuY29udGVudFxyXG5cdFx0bGV0IGN1cnJlbnQ9bnVsbFxyXG5cdFx0bGV0IGNoaWxkcmVuPSQoXCJ3XFxcXDpzZWN0UHJcIikuZWFjaCgoaSxzZWN0KT0+e1xyXG5cdFx0XHRsZXQgZW5kPSQoc2VjdCkuY2xvc2VzdCgnd1xcXFw6Ym9keT4qJylcclxuXHRcdFx0c2VjdC5jb250ZW50PWVuZC5wcmV2VW50aWwoY3VycmVudCkudG9BcnJheSgpLnJldmVyc2UoKVxyXG5cdFx0XHRpZighZW5kLmlzKHNlY3QpKVxyXG5cdFx0XHRcdHNlY3QuY29udGVudC5wdXNoKGVuZC5nZXQoMCkpXHJcblx0XHRcdGN1cnJlbnQ9ZW5kXHJcblx0XHR9KS50b0FycmF5KClcclxuXHRcdHJldHVybiB7dHlwZTpcImRvY3VtZW50XCIsIGNoaWxkcmVufVxyXG5cdH0sXHJcblx0c2VjdFByKHdYbWwsb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0Y29uc3QgaGY9dHlwZT0+d1htbC5jaGlsZHJlbi5maWx0ZXIoYT0+YS5uYW1lPT1gdzoke3R5cGV9UmVmZXJlbmNlYCkucmVkdWNlKChoZWFkZXJzLGEpPT57XHJcblx0XHRcdFx0aGVhZGVycy5zZXQoYS5hdHRyaWJzW1widzp0eXBlXCJdLG9mZmljZURvY3VtZW50LmdldFJlbChhLmF0dHJpYnNbXCJyOmlkXCJdKSlcclxuXHRcdFx0XHRyZXR1cm4gaGVhZGVyc1xyXG5cdFx0XHR9LG5ldyBNYXAoKSlcclxuXHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHR0eXBlOlwic2VjdGlvblwiLFxyXG5cdFx0XHRjaGlsZHJlbjp3WG1sLmNvbnRlbnQsXHJcblx0XHRcdGhlYWRlcnM6aGYoXCJoZWFkZXJcIiksXHJcblx0XHRcdGZvb3RlcnM6aGYoXCJmb290ZXJcIiksXHJcblx0XHRcdGhhc1RpdGxlUGFnZTogISF3WG1sLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lPT1cInc6dGl0bGVQZ1wiKVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0cCh3WG1sLG9mZmljZURvY3VtZW50KXtcclxuXHRcdGxldCAkPW9mZmljZURvY3VtZW50LmNvbnRlbnQod1htbClcclxuXHRcdGxldCB0eXBlPVwicFwiXHJcblxyXG5cdFx0bGV0IGlkZW50aXR5PXt0eXBlLHByOndYbWwuY2hpbGRyZW4uZmluZCgoe25hbWV9KT0+bmFtZT09XCJ3OnBQclwiKSxjaGlsZHJlbjp3WG1sLmNoaWxkcmVuLmZpbHRlcigoe25hbWV9KT0+bmFtZSE9XCJ3OnBQclwiKX1cclxuXHJcblx0XHRsZXQgcFByPSQuZmluZChcIndcXFxcOnBQclwiKVxyXG5cdFx0aWYocFByLmxlbmd0aCl7XHJcblx0XHRcdGxldCBzdHlsZUlkPXBQci5maW5kKFwid1xcXFw6cFN0eWxlXCIpLmF0dHIoXCJ3OnZhbFwiKVxyXG5cclxuXHRcdFx0bGV0IG51bVByPXBQci5jaGlsZHJlbihcIndcXFxcOm51bVByXCIpXHJcblx0XHRcdGlmKCFudW1Qci5sZW5ndGggJiYgc3R5bGVJZCl7XHJcblx0XHRcdFx0bnVtUHI9b2ZmaWNlRG9jdW1lbnRcclxuXHRcdFx0XHRcdC5zdHlsZXMoYHdcXFxcOnN0eWxlW3dcXFxcOnN0eWxlSWQ9XCIke3N0eWxlSWR9XCJdYClcclxuXHRcdFx0XHRcdC5iYXNlc3QoYDpoYXMod1xcXFw6bnVtUHIpYClcclxuXHRcdFx0XHRcdC5maW5kKFwid1xcXFw6bnVtUHJcIilcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYobnVtUHIubGVuZ3RoKXtcclxuXHRcdFx0XHRpZGVudGl0eS50eXBlPVwibGlzdFwiXHJcblx0XHRcdFx0aWRlbnRpdHkubnVtSWQ9bnVtUHIuZmluZChcIndcXFxcOm51bUlkXCIpLmF0dHIoXCJ3OnZhbFwiKVxyXG5cdFx0XHRcdGlkZW50aXR5LmxldmVsPXBhcnNlSW50KG51bVByLmZpbmQoXCJ3XFxcXDppbHZsXCIpLmF0dHIoXCJ3OnZhbFwiKXx8MClcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYoc3R5bGVJZCAmJiBzdHlsZUlkLnN0YXJ0c1dpdGgoXCJIZWFkaW5nXCIpKXtcclxuXHRcdFx0XHRsZXQgb3V0bGluZUx2bD1vZmZpY2VEb2N1bWVudFxyXG5cdFx0XHRcdFx0LnN0eWxlcyhgd1xcXFw6c3R5bGVbd1xcXFw6c3R5bGVJZD1cIiR7c3R5bGVJZH1cIl1gKVxyXG5cdFx0XHRcdFx0LmJhc2VzdChcIjpoYXMod1xcXFw6b3V0bGluZUx2bClcIilcclxuXHRcdFx0XHRcdC5maW5kKFwid1xcXFw6b3V0bGluZUx2bFwiKVxyXG5cdFx0XHRcdFx0LmF0dHIoXCJ3OnZhbFwiKVxyXG5cdFx0XHRcdGlmKG91dGxpbmVMdmwpe1xyXG5cdFx0XHRcdFx0aWRlbnRpdHkudHlwZT1cImhlYWRpbmdcIlxyXG5cdFx0XHRcdFx0aWRlbnRpdHkub3V0bGluZT1wYXJzZUludChvdXRsaW5lTHZsKSsxXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGlkZW50aXR5XHJcblx0fSxcclxuXHRyKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHt0eXBlOlwiclwiLCBwcjogd1htbC5jaGlsZHJlbi5maW5kKCh7bmFtZX0pPT5uYW1lPT1cInc6clByXCIpLCBjaGlsZHJlbjogd1htbC5jaGlsZHJlbi5maWx0ZXIoKHtuYW1lfSk9Pm5hbWUhPVwidzpyUHJcIil9XHJcblx0fSxcclxuXHRmbGRDaGFyKHdYbWwpe1xyXG5cdFx0cmV0dXJuIHdYbWwuYXR0cmlic1tcInc6ZmxkQ2hhclR5cGVcIl1cclxuXHR9LFxyXG5cclxuXHRpbmxpbmUod1htbCxvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgJD1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpXHJcblx0XHRyZXR1cm4ge3R5cGU6YGRyYXdpbmcuaW5saW5lYCwgY2hpbGRyZW46JC5maW5kKCdhXFxcXDpncmFwaGljPmFcXFxcOmdyYXBoaWNEYXRhJykuY2hpbGRyZW4oKS50b0FycmF5KCl9XHJcblx0fSxcclxuXHRhbmNob3Iod1htbCwgb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0bGV0ICQ9b2ZmaWNlRG9jdW1lbnQuY29udGVudCh3WG1sKVxyXG5cdFx0bGV0IGdyYXBoaWNEYXRhPSQuZmluZCgnYVxcXFw6Z3JhcGhpYz5hXFxcXDpncmFwaGljRGF0YScpXHJcblx0XHRsZXQgdHlwZT1ncmFwaGljRGF0YS5hdHRyKFwidXJpXCIpLnNwbGl0KFwiL1wiKS5wb3AoKVxyXG5cdFx0bGV0IGNoaWxkcmVuPWdyYXBoaWNEYXRhLmNoaWxkcmVuKCkudG9BcnJheSgpXHJcblx0XHRpZih0eXBlPT1cIndvcmRwcm9jZXNzaW5nR3JvdXBcIilcclxuXHRcdFx0Y2hpbGRyZW49Y2hpbGRyZW5bMF0uY2hpbGRyZW4uZmlsdGVyKGE9PmEubmFtZS5zcGxpdChcIjpcIilbMF0hPVwid3BnXCIpXHJcblxyXG5cdFx0cmV0dXJuIHt0eXBlOlwiZHJhd2luZy5hbmNob3JcIixjaGlsZHJlbn1cclxuXHR9LFxyXG5cdHBpYyh3WG1sLCBvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgYmxpcD1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpLmZpbmQoXCJhXFxcXDpibGlwXCIpXHJcblx0XHRsZXQgcmlkPWJsaXAuYXR0cigncjplbWJlZCcpfHxibGlwLmF0dHIoJ3I6bGluaycpXHJcblx0XHRyZXR1cm4ge3R5cGU6XCJwaWN0dXJlXCIsLi4ub2ZmaWNlRG9jdW1lbnQuZ2V0UmVsKHJpZCl9XHJcblx0fSxcclxuXHR3c3Aod1htbCwgb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0cmV0dXJuIHt0eXBlOlwic2hhcGVcIiwgY2hpbGRyZW46b2ZmaWNlRG9jdW1lbnQuY29udGVudCh3WG1sKS5maW5kKFwiPndwc1xcXFw6dHhieD53XFxcXDp0eGJ4Q29udGVudFwiKS5jaGlsZHJlbigpLnRvQXJyYXkoKX1cclxuXHR9LFxyXG5cdEZhbGxiYWNrKCl7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH0sXHJcblx0c2R0KHdYbWwsb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0bGV0ICQ9b2ZmaWNlRG9jdW1lbnQuY29udGVudCh3WG1sKVxyXG5cdFx0bGV0IHByPSQuZmluZCgnPndcXFxcOnNkdFByJylcclxuXHRcdGxldCBjb250ZW50PSQuZmluZCgnPndcXFxcOnNkdENvbnRlbnQnKVxyXG5cdFx0bGV0IGNoaWxkcmVuPWNvbnRlbnQuY2hpbGRyZW4oKS50b0FycmF5KClcclxuXHJcblx0XHRsZXQgZWxCaW5kaW5nPXByLmZpbmQoJ3dcXFxcOmRhdGFCaW5kaW5nJykuZ2V0KDApXHJcblx0XHRpZihlbEJpbmRpbmcpey8vcHJvcGVydGllc1xyXG5cdFx0XHRsZXQgcGF0aD1lbEJpbmRpbmcuYXR0cmlic1sndzp4cGF0aCddLFxyXG5cdFx0XHRcdGQ9cGF0aC5zcGxpdCgvW1xcL1xcOlxcW10vKSxcclxuXHRcdFx0XHRuYW1lPShkLnBvcCgpLGQucG9wKCkpO1xyXG5cdFx0XHRsZXQgdmFsdWU9Y29udGVudC50ZXh0KClcclxuXHJcblx0XHRcdHJldHVybiB7dHlwZTpcInByb3BlcnR5XCIsIG5hbWUsIHZhbHVlLCBjaGlsZHJlbn1cclxuXHRcdH1lbHNley8vY29udHJvbHNcclxuXHRcdFx0bGV0IHByQ2hpbGRyZW49cHIuZ2V0KDApLmNoaWxkcmVuXHJcblx0XHRcdGxldCBlbFR5cGU9cHJDaGlsZHJlbltwckNoaWxkcmVuLmxlbmd0aC0xXVxyXG5cdFx0XHRsZXQgbmFtZT1lbFR5cGUubmFtZS5zcGxpdChcIjpcIikucG9wKClcclxuXHRcdFx0bGV0IHR5cGU9XCJ0ZXh0LHBpY3R1cmUsZG9jUGFydExpc3QsY29tYm9Cb3gsZHJvcERvd25MaXN0LGRhdGUsY2hlY2tib3gscmVwZWF0aW5nU2VjdGlvbixyZXBlYXRpbmdTZWN0aW9uSXRlbVwiLnNwbGl0KFwiLFwiKVxyXG5cdFx0XHRcdC5maW5kKGE9PmE9PW5hbWUpXHJcblx0XHRcdGxldCBtb2RlbD17Y2hpbGRyZW59XHJcblx0XHRcdGlmKHR5cGUpe1xyXG5cdFx0XHRcdG1vZGVsLnR5cGU9YGNvbnRyb2wuJHt0eXBlfWBcclxuXHRcdFx0fWVsc2V7Ly9jb250YWluZXJcclxuXHRcdFx0XHRpZihjb250ZW50LmZpbmQoXCJ3XFxcXDpwLHdcXFxcOnRibCx3XFxcXDp0cix3XFxcXDp0Y1wiKS5sZW5ndGgpe1xyXG5cdFx0XHRcdFx0bW9kZWwudHlwZT1cImJsb2NrXCJcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdG1vZGVsLnR5cGU9XCJpbmxpbmVcIlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0JD1vZmZpY2VEb2N1bWVudC5jb250ZW50XHJcblx0XHRcdHN3aXRjaChtb2RlbC50eXBlKXtcclxuXHRcdFx0XHRjYXNlIFwiY29udHJvbC5kcm9wRG93bkxpc3RcIjpcclxuXHRcdFx0XHRjYXNlIFwiY29udHJvbC5jb21ib0JveFwiOntcclxuXHRcdFx0XHRcdGxldCBzZWxlY3RlZD0kKGNvbnRlbnQpLnRleHQoKVxyXG5cdFx0XHRcdFx0bW9kZWwub3B0aW9ucz0kKGVsVHlwZSlcclxuXHRcdFx0XHRcdFx0LmZpbmQoXCJ3XFxcXDpsaXN0SXRlbVwiKVxyXG5cdFx0XHRcdFx0XHQubWFwKChpLGxpKT0+e1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5VGV4dDogbGkuYXR0cmlic1tcInc6ZGlzcGxheVRleHRcIl0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogbGkuYXR0cmlic1tcInc6dmFsdWVcIl1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdC5nZXQoKVxyXG5cdFx0XHRcdFx0bW9kZWwudmFsdWU9KG1vZGVsLm9wdGlvbnMuZmluZChhPT5hLmRpc3BsYXlUZXh0PT1zZWxlY3RlZCl8fHt9KS52YWx1ZVxyXG5cdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y2FzZSBcImNvbnRyb2wuY2hlY2tib3hcIjp7XHJcblx0XHRcdFx0XHRsZXQgbnM9ZWxUeXBlLm5hbWUuc3BsaXQoXCI6XCIpWzBdXHJcblx0XHRcdFx0XHRtb2RlbC5jaGVja2VkPSQoZWxUeXBlKS5maW5kKGAke25zfVxcXFw6Y2hlY2tlZGApLmF0dHIoYCR7bnN9OnZhbGApPT1cIjFcIlxyXG5cdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y2FzZSBcImNvbnRyb2wudGV4dFwiOlxyXG5cdFx0XHRcdFx0aWYoY29udGVudC5maW5kKCd3XFxcXDpyIFt3XFxcXDp2YWx+PVBsYWNlaG9sZGVyXScpLmxlbmd0aD09MClcclxuXHRcdFx0XHRcdFx0bW9kZWwudmFsdWU9Y29udGVudC50ZXh0KClcclxuXHRcdFx0XHRcdGJyZWFrXHJcblx0XHRcdFx0Y2FzZSBcImNvbnRyb2wuZGF0ZVwiOlxyXG5cdFx0XHRcdFx0bW9kZWwudmFsdWU9bmV3IERhdGUoJChlbFR5cGUpLmF0dHIoXCJ3OmZ1bGxEYXRlXCIpKVxyXG5cdFx0XHRcdFx0bW9kZWwuZm9ybWF0PSQoZWxUeXBlKS5maW5kKFwid1xcXFw6ZGF0ZUZvcm1hdFwiKS5hdHRyKFwidzp2YWxcIilcclxuXHRcdFx0XHRcdG1vZGVsLmxvY2FsZT0kKGVsVHlwZSkuZmluZChcIndcXFxcOmxpZFwiKS5hdHRyKFwidzp2YWxcIilcclxuXHRcdFx0XHRcdGJyZWFrXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIG1vZGVsXHJcblx0XHR9XHJcblx0fSxcclxuXHRoeXBlcmxpbmsod1htbCxvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgdXJsPW9mZmljZURvY3VtZW50LmdldFJlbCh3WG1sLmF0dHJpYnNbXCJyOmlkXCJdKVxyXG5cdFx0cmV0dXJuIHt0eXBlOlwiaHlwZXJsaW5rXCIsIHVybH1cclxuXHR9LFxyXG5cdHRibCh3WG1sKXtcclxuXHRcdHJldHVybiB3WG1sLmNoaWxkcmVuLnJlZHVjZSgoc3RhdGUsbm9kZSk9PntcclxuXHRcdFx0c3dpdGNoKG5vZGUubmFtZSl7XHJcblx0XHRcdGNhc2UgXCJ3OnRibFByXCI6XHJcblx0XHRcdFx0c3RhdGUucHI9bm9kZVxyXG5cdFx0XHRicmVha1xyXG5cdFx0XHRjYXNlIFwidzp0YmxHcmlkXCI6XHJcblx0XHRcdFx0c3RhdGUuY29scz1ub2RlLmNoaWxkcmVuXHJcblx0XHRcdGJyZWFrXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0c3RhdGUuY2hpbGRyZW4ucHVzaChub2RlKVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBzdGF0ZVxyXG5cdFx0fSx7dHlwZTpcInRibFwiLGNoaWxkcmVuOltdLHByOm51bGwsY29sczpbXX0pXHJcblx0fSxcclxuXHR0cih3WG1sKXtcclxuXHRcdHJldHVybiB3WG1sLmNoaWxkcmVuLnJlZHVjZSgoc3RhdGUsbm9kZSk9PntcclxuXHRcdFx0c3dpdGNoKG5vZGUubmFtZSl7XHJcblx0XHRcdGNhc2UgXCJ3OnRyUHJcIjpcclxuXHRcdFx0XHRzdGF0ZS5wcj1ub2RlXHJcblx0XHRcdFx0c3RhdGUuaXNIZWFkZXI9ISFub2RlLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lPT1cInc6dGJsSGVhZGVyXCIpXHJcblx0XHRcdGJyZWFrXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0c3RhdGUuY2hpbGRyZW4ucHVzaChub2RlKVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBzdGF0ZVxyXG5cdFx0fSx7dHlwZTpcInRyXCIsY2hpbGRyZW46W10scHI6bnVsbH0pXHJcblx0fSxcclxuXHR0Yyh3WG1sKXtcclxuXHRcdHJldHVybiB3WG1sLmNoaWxkcmVuLnJlZHVjZSgoc3RhdGUsbm9kZSk9PntcclxuXHRcdFx0c3dpdGNoKG5vZGUubmFtZSl7XHJcblx0XHRcdGNhc2UgXCJ3OnRjUHJcIjpcclxuXHRcdFx0XHRzdGF0ZS5wcj1ub2RlXHJcblx0XHRcdGJyZWFrXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0c3RhdGUuY2hpbGRyZW4ucHVzaChub2RlKVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBzdGF0ZVxyXG5cdFx0fSx7dHlwZTpcInRjXCIsY2hpbGRyZW46W10scHI6bnVsbH0pXHJcblx0fSxcclxuXHRhbHRDaHVuayh3WG1sLCBvZmZpY2VEb2N1bWVudCl7XHJcblx0XHRsZXQgcklkPXdYbWwuYXR0cmlic1sncjppZCddXHJcblx0XHRsZXQgZGF0YT1vZmZpY2VEb2N1bWVudC5nZXRSZWwocklkKVxyXG5cclxuXHRcdGxldCBwYXJ0TmFtZT1vZmZpY2VEb2N1bWVudC5mb2xkZXIrb2ZmaWNlRG9jdW1lbnQucmVscyhgW0lkPSR7cklkfV1gKS5hdHRyKFwiVGFyZ2V0XCIpXHJcblx0XHRsZXQgY29udGVudFR5cGU9b2ZmaWNlRG9jdW1lbnQuZG9jLmNvbnRlbnRUeXBlcyhgT3ZlcnJpZGVbUGFydE5hbWU9JyR7cGFydE5hbWV9J11gKS5hdHRyKFwiQ29udGVudFR5cGVcIilcclxuXHRcdHJldHVybiB7dHlwZTpcImNodW5rXCIsIGRhdGEsIGNvbnRlbnRUeXBlfVxyXG5cdH0sXHJcblx0ZG9jRGVmYXVsdHMod1htbCl7XHJcblx0XHRyZXR1cm4ge3R5cGU6XCJzdHlsZVwifVxyXG5cdH0sXHJcblx0c3R5bGUod1htbCl7XHJcblx0XHRyZXR1cm4ge3R5cGU6XCJzdHlsZVwiLCBpZDp3WG1sLmF0dHJpYnNbJ3c6c3R5bGVJZCddfVxyXG5cdH0sXHJcblx0YWJzdHJhY3ROdW0od1htbCl7XHJcblx0XHRyZXR1cm4ge3R5cGU6XCJhYnN0cmFjdE51bVwiLGlkOndYbWwuYXR0cmlic1tcInc6YWJzdHJhY3ROdW1JZFwiXX1cclxuXHR9LFxyXG5cdG51bSh3WG1sKXtcclxuXHRcdHJldHVybiB7dHlwZTpcIm51bVwiLGlkOndYbWwuYXR0cmlic1tcInc6bnVtSWRcIl0sYWJzdHJhY3ROdW06d1htbC5jaGlsZHJlbi5maW5kKGE9PmEubmFtZT09XCJ3OmFic3RyYWN0TnVtSWRcIikuYXR0cmlic1tcInc6dmFsXCJdfVxyXG5cdH0sXHJcblx0bGF0ZW50U3R5bGVzKCl7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH0sXHJcblx0b2JqZWN0KHdYbWwsb2ZmaWNlRG9jdW1lbnQpe1xyXG5cdFx0bGV0IG9sZT1vZmZpY2VEb2N1bWVudC5jb250ZW50KHdYbWwpLmZpbmQoXCJvXFxcXDpPTEVPYmplY3RcIilcclxuXHRcdGxldCB0eXBlPW9sZS5hdHRyKFwiUHJvZ0lEXCIpXHJcblx0XHRsZXQgZW1iZWQ9b2xlLmF0dHIoXCJUeXBlXCIpPT09XCJFbWJlZFwiXHJcblx0XHRsZXQgcklkPW9sZS5hdHRyKFwicjppZFwiKVxyXG5cdFx0cmV0dXJuIHt0eXBlOlwib2JqZWN0XCIsZW1iZWQsIHByb2c6IHR5cGUsIGRhdGE6b2ZmaWNlRG9jdW1lbnQuZ2V0UmVsT2xlT2JqZWN0KHJJZCl9XHJcblx0fVxyXG59XHJcbiJdfQ== |
{ | ||
"name": "docx4js", | ||
"description": "javascript docx parser", | ||
"version": "3.1.23", | ||
"version": "3.1.24", | ||
"author": { | ||
@@ -6,0 +6,0 @@ "name": "Raymond Li", |
@@ -19,2 +19,14 @@ import Part from "../part" | ||
}) | ||
var $=this.styles | ||
this.styles.prototype.basest=function(selector){ | ||
let current=this | ||
while(current.length>0){ | ||
if(current.is(selector)){ | ||
return $(current) | ||
} | ||
current=$.root().find(`w\\:style[w\\:styleId="${current.children("w\\:basedOn").attr("w:val")}"]`) | ||
} | ||
return this.not(this) | ||
} | ||
} | ||
@@ -101,5 +113,8 @@ | ||
let numPr=pPr.find("w\\:numPr>w\\:numId") | ||
let numPr=pPr.children("w\\:numPr") | ||
if(!numPr.length && styleId){ | ||
numPr=officeDocument.styles(`w\\:style[w\\:styleId="${styleId}"] w\\:numPr>w\\:numId`) | ||
numPr=officeDocument | ||
.styles(`w\\:style[w\\:styleId="${styleId}"]`) | ||
.basest(`:has(w\\:numPr)`) | ||
.find("w\\:numPr") | ||
} | ||
@@ -110,11 +125,14 @@ | ||
identity.numId=numPr.find("w\\:numId").attr("w:val") | ||
identity.level=numPr.find("w\\:ilvl").attr("w:val") | ||
}else{ | ||
let outlineLvl=pPr.find("w\\:outlineLvl").attr("w:val") | ||
if(!outlineLvl && styleId) | ||
outlineLvl=officeDocument.styles(`w\\:style[w\\:styleId="${styleId}"] w\\:outlineLvl`).attr("w:val") | ||
identity.level=parseInt(numPr.find("w\\:ilvl").attr("w:val")||0) | ||
} | ||
if(styleId && styleId.startsWith("Heading")){ | ||
let outlineLvl=officeDocument | ||
.styles(`w\\:style[w\\:styleId="${styleId}"]`) | ||
.basest(":has(w\\:outlineLvl)") | ||
.find("w\\:outlineLvl") | ||
.attr("w:val") | ||
if(outlineLvl){ | ||
identity.type="heading" | ||
identity.level=parseInt(outlineLvl)+1 | ||
identity.outline=parseInt(outlineLvl)+1 | ||
} | ||
@@ -121,0 +139,0 @@ } |
Sorry, the diff of this file is too big to display
1028283
5468