@dbx-tools/shared-core 0.6.211 → 0.6.213
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/async.d.ts +4 -0
- package/lib/src/async.js +1 -1
- package/lib/src/brand.d.ts +12 -0
- package/lib/src/brand.js +10 -1
- package/lib/src/function.d.ts +1 -0
- package/lib/src/function.js +1 -1
- package/lib/src/log.d.ts +4 -0
- package/lib/src/log.js +1 -1
- package/lib/src/object.d.ts +2 -0
- package/lib/src/object.js +1 -1
- package/lib/src/string.d.ts +5 -0
- package/lib/src/string.js +1 -1
- package/package.json +4 -3
- package/src/async.ts +4 -0
- package/src/brand.ts +12 -0
- package/src/function.ts +1 -0
- package/src/log.ts +4 -0
- package/src/object.ts +2 -0
- package/src/string.ts +5 -2
package/lib/src/log.js
CHANGED
|
@@ -328,4 +328,4 @@ export function logger(loggerName) {
|
|
|
328
328
|
const name = extractLoggerName(loggerName);
|
|
329
329
|
return createLogger(name);
|
|
330
330
|
}
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHOzs7Ozs7Ozs7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBY3ZELE1BQU0sYUFBYSxHQUFJLFVBQXdDLENBQUMsT0FBTyxDQUFDO0FBQ3hFLE1BQU0sU0FBUyxHQUFJLFVBQWdDLENBQUMsR0FBRyxDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sbUJBQW1CLEdBQ3ZCLGFBQWEsSUFBSSxPQUFPLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLFVBQVU7SUFDaEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNO0lBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFFaEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVUsQ0FBQztBQUMvRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUN2QyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDckIsQ0FBQztBQUM5QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3pDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN2QixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxPQUFPO0lBQy9CLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLE1BQU07WUFDVCxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsT0FBTztZQUMzQixNQUFNO1FBQ1IsS0FBSyxN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YUFBdUI7SUFDdkQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLGFBQWEsSUFBSSxLQUFLLENBQUM7SUFDdkQsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBZTtJQUM1QyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyx3REFBd0QsQ0FBQztBQUVuRjs7Ozs7R0FLRztBQUNILFNBQVMsaUJBQWlCLENBQUMsVUFBeUM7SUFDbEUsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNsQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsVUFBeUM7SUFDOUQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGFnZ2VkLCBsZXZlbGVkIGxvZ2dpbmcgZm9yIGV2ZXJ5IHJ1bnRpbWUgLSB0aGUgb25lIGxvZ2dlciB0aGUgd2hvbGVcbiAqIG1vbm9yZXBvIHNoYXJlcy5cbiAqXG4gKiB7QGxpbmsgbG9nZ2VyfSByZXNvbHZlcyBhIHRhZ2dlZCB7QGxpbmsgTG9nZ2VyfSB0aHJvdWdoIGEgc3luY2hyb25vdXMgY29uc29sZVxuICogc2luaywgdGhlbiB1cGdyYWRlcyBpdHMgc2VydmVyLXNpZGUgZm9ybWF0dGVyIHdoZW4gYG5vZGU6dXRpbGAgcmVzb2x2ZXMuXG4gKiBLZWVwaW5nIHRoZSBzaW5rIGRlcGVuZGVuY3ktZnJlZSBwcmV2ZW50cyBicm93c2VyIGJ1bmRsZXJzIGZyb20gcmV0YWluaW5nIGFuXG4gKiBvcHRpb25hbCBiYXJlIGltcG9ydCB0aGF0IGRvd25zdHJlYW0gYXBwcyB3b3VsZCBzdGlsbCBoYXZlIHRvIGluc3RhbGwuXG4gKiB7QGxpbmsgTG9nTGV2ZWx9IGZpbHRlcmluZyBydW5zIHRocm91Z2gge0BsaW5rIHNob3VsZEVtaXR9IGluIHBlci1sZXZlbFxuICogd3JhcHBlcnMgYXJvdW5kIHRoZSBwbGF0Zm9ybSBjb25zb2xlIG9yIHN0ZGVyciBzaW5rLlxuICpcbiAqIFRoZSBjb25zb2xlIGZhbGxiYWNrIHdyaXRlcyBmb3JtYXR0ZWQgbGluZXMgdG8gYHByb2Nlc3Muc3RkZXJyYCB3aGVuIGl0IGlzXG4gKiBhdmFpbGFibGUgKEJ1biBgaW5zcGVjdGAgcGVyIGFyZ3VtZW50IHdoZW4gYExPR19CVU5fQ09OU09MRV9ESVNBQkxFRGAgaXNcbiAqIHVuc2V0LCBvdGhlcndpc2UgYG5vZGU6dXRpbGAgYGZvcm1hdFdpdGhPcHRpb25zYCksIG9yIGRlbGVnYXRlcyB0byBnbG9iYWxcbiAqIGBjb25zb2xlLipgIHdoZW4gc3RkZXJyIG9yIGBub2RlOnV0aWxgIGlzIHVuYXZhaWxhYmxlLiBCcm93c2VyIGhvc3RzIG9taXRcbiAqIHRoZSBgTEVWRUxgIHRleHQgcHJlZml4IChkZXZ0b29scyBzaG93IHNldmVyaXR5KSBhbmQga2VlcCBvbmx5IHRoZSBgW25hbWVdYFxuICogdGFnLlxuICpcbiAqIEVudiB0b2dnbGVzOiBgTE9HX0xFVkVMYCAocmVhZCBwZXIgY2FsbCkgYW5kIGBMT0dfQlVOX0NPTlNPTEVfRElTQUJMRURgXG4gKiAocmVhZCBvbmNlIGR1cmluZyBmYWN0b3J5IGluaXQpLlxuICpcbiAqIEJyb3dzZXItc2FmZTogYHByb2Nlc3NgIC8gYEJ1bmAgLyBgd2luZG93YCAvIGBkb2N1bWVudGAgYXJlIGFsbCByZWFjaGVkXG4gKiB0aHJvdWdoIGBnbG9iYWxUaGlzYCBhbmQgZ3VhcmRlZCwgYW5kIGBub2RlOnV0aWxgIGlzIGltcG9ydGVkIE9OTFkgb24gYSBob3N0XG4gKiB0aGF0IGhhcyBgcHJvY2Vzcy5zdGRlcnJgIC0gbmV2ZXIgaW4gYSBicm93c2VyLCB3aGVyZSB0aGUgc3BlY2lmaWVyIGlzXG4gKiB1bnJlc29sdmFibGUgLSBzbyB0aGUgbW9kdWxlIHdvcmtzIGluIGFueSBydW50aW1lLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIi4vZnVuY3Rpb24udHNcIjtcbmltcG9ydCB7IHR5cGUgTmFtZUxpa2UsIHRvQm9vbGVhbiB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuXG4vKiogYHByb2Nlc3NgLXNoYXBlZCB2aWV3IG9mZiBgZ2xvYmFsVGhpc2AsIHNvIG5vIG5vZGUgdHlwZXMgYXJlIG5lZWRlZC4gKi9cbmludGVyZmFjZSBQcm9jZXNzTGlrZSB7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHN0ZGVycj86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG59XG5cbi8qKiBgQnVuYC1zaGFwZWQgdmlldyBvZmYgYGdsb2JhbFRoaXNgLCBzbyBubyBgQHR5cGVzL2J1bmAgaXMgbmVlZGVkLiAqL1xuaW50ZXJmYWNlIEJ1bkxpa2Uge1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBpbnNwZWN0PzogKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBjb2xvcnM/OiBib29sZWFuOyBkZXB0aD86IG51bWJlciB9KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IGdsb2JhbFByb2Nlc3MgPSAoZ2xvYmFsVGhpcyBhcyB7IHByb2Nlc3M/OiBQcm9jZXNzTGlrZSB9KS5wcm9jZXNzO1xuY29uc3QgZ2xvYmFsQnVuID0gKGdsb2JhbFRoaXMgYXMgeyBCdW4/OiBCdW5MaWtlIH0pLkJ1bjtcblxuLyoqXG4gKiBOb2RlIGBwcm9jZXNzLnN0ZGVycmAgd2hlbiB3cml0YWJsZSwgZWxzZSBgdW5kZWZpbmVkYCAoc3RhYmxlIGZvciB0aGVcbiAqIHByb2Nlc3MpLiBUeXBlZCBsb29zZWx5IChgYW55YCkgYmVjYXVzZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGNvbnNvbGUgc2luaydzXG4gKiBgLndyaXRlYCwgd2hpY2ggb3VyIHN0cnVjdHVyYWwge0BsaW5rIFByb2Nlc3NMaWtlfSBzaGFwZSBkb2VzIG5vdCBzYXRpc2Z5XG4gKiBub21pbmFsbHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkRXJyOiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZGVycj8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRlcnJcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgTE9HX0xFVkVMUyA9IFtcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiXSBhcyBjb25zdDtcbmNvbnN0IExPR19MRVZFTF9SQU5LID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBMT0dfTEVWRUxTLm1hcCgobGV2ZWwsIGluZGV4KSA9PiBbbGV2ZWwsIGluZGV4XSksXG4pIGFzIFJlY29yZDxMb2dMZXZlbCwgbnVtYmVyPjtcbmNvbnN0IExPR19MRVZFTF9DT0xPUlMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgIGxldCBjb2xvciA9IFwiXFx4MWJbOTBtXCI7IC8vIGdyYXlcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzRtXCI7IC8vIGJsdWVcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzNtXCI7IC8vIHllbGxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzFtXCI7IC8vIHJlZFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFtsZXZlbCwgY29sb3JdO1xuICB9KSxcbikgYXMgUmVjb3JkPExvZ0xldmVsLCBzdHJpbmc+O1xuY29uc3QgTE9HX0xFVkVMX0NPTE9SX1JFU0VUID0gXCJcXHgxYlswbVwiO1xuY29uc3QgREVGQVVMVF9MRVZFTDogTG9nTGV2ZWwgPSBcImluZm9cIjtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc2V2ZXJpdGllcywgbG93ZXN0IHRvIGhpZ2hlc3Q6IGBkZWJ1Z2AsIGBpbmZvYCwgYHdhcm5gLCBgZXJyb3JgLlxuICogQSBjYWxsIGJlbG93IHRoZSBhY3RpdmUgdGhyZXNob2xkIGlzIGRpc2NhcmRlZCBiZWZvcmUgYW55IHN0cmluZyB3b3JrIG9yXG4gKiBzaW5rIEkvTy5cbiAqXG4gKiBUaGUgdGhyZXNob2xkIGNvbWVzIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgb24gZXZlcnkgY2FsbFxuICogKGNhc2UtaW5zZW5zaXRpdmUsIGRlZmF1bHQgYGluZm9gIHdoZW4gdW5zZXQsIGVtcHR5LCBvciB1bmtub3duKSBzbyB0ZXN0XG4gKiBydW5uZXJzIGFuZCBlbWJlZGRlcnMgY2FuIGNoYW5nZSB2ZXJib3NpdHkgYWZ0ZXIgaW1wb3J0IHdpdGhvdXQgcmVzdGFydGluZ1xuICogdGhlIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gKHR5cGVvZiBMT0dfTEVWRUxTKVtudW1iZXJdO1xuXG5leHBvcnQgdHlwZSBMb2dnZXIgPSB7XG4gIFtLIGluIExvZ0xldmVsXTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufSAmIHtcbiAgLyoqIFN1Y2Nlc3MgbWVzc2FnZSBlbWl0dGVkIGF0IGBpbmZvYCBsZXZlbC4gKi9cbiAgc3VjY2VzczogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuICAvKiogU3RhcnQgLyBpbi1wcm9ncmVzcyBtZXNzYWdlIGVtaXR0ZWQgYXQgYGluZm9gIGxldmVsLiAqL1xuICBzdGFydDogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuLyoqIGAobmFtZT8pID0+IExvZ2dlcmAgc2luayBjb25zdHJ1Y3RvciByZXR1cm5lZCBieSB0aGUgaW5pdC10aW1lIGZhY3RvcnkgY2hhaW4uICovXG50eXBlIExvZ2dlckZhY3RvcnkgPSAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXG4vKipcbiAqIENvbnNvbGUge0BsaW5rIExvZ2dlckZhY3Rvcnl9OyBhbHdheXMgc3VjY2VlZHMuXG4gKlxuICogV2hlbiBgcHJvY2Vzcy5zdGRlcnJgIGlzIGF2YWlsYWJsZSwgZm9ybWF0cyBlYWNoIGxpbmUgYW5kIHdyaXRlcyBvbmx5IHRvXG4gKiBzdGRlcnIuIEJ1biBgaW5zcGVjdGAgZm9ybWF0cyBlYWNoIGFyZ3VtZW50IHdoZW4gZW5hYmxlZDsgb3RoZXJ3aXNlXG4gKiBgdXRpbC5pbnNwZWN0YCB3aGVuIGBub2RlOnV0aWxgIGxvYWRzLCBvciBhIGBKU09OLnN0cmluZ2lmeWAgZmFsbGJhY2sgd2hlblxuICogaXQgZG9lcyBub3QuIFdoZW4gc3RkZXJyIGlzIHVuYXZhaWxhYmxlIChldmVyeSBicm93c2VyKSwgYmluZHNcbiAqIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9IHByZWZpeGVzIGludG8gZ2xvYmFsIGBjb25zb2xlLipgIGNhbGxzIGFuZCBza2lwcyB0aGVcbiAqIGBub2RlOnV0aWxgIGltcG9ydCBlbnRpcmVseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55KTogUHJvbWlzZTxMb2dnZXJGYWN0b3J5PiB7XG4gIC8vIEluZGlyZWN0IHNwZWNpZmllciBzbyB0aGlzIGJyb3dzZXItc2FmZSBtb2R1bGUgZG9lc24ndCBzdGF0aWNhbGx5IHB1bGwgaW5cbiAgLy8gbm9kZSB0eXBlczogYG5vZGU6dXRpbGAgaXMgb3B0aW9uYWwgKHRoZSBKU09OIGZhbGxiYWNrIGNvdmVycyBpdHMgYWJzZW5jZSkuXG4gIGNvbnN0IG5vZGVVdGlsID0gXCJub2RlOnV0aWxcIjtcbiAgLy8gR2F0ZWQsIG5vdCBqdXN0IGNhdWdodDogdGhlIGluZGlyZWN0IHNwZWNpZmllciBkZWZlYXRzIGJ1bmRsZXIgYW5hbHlzaXMgYnlcbiAgLy8gZGVzaWduLCBzbyBhIGNsaWVudCBidWlsZCBlbWl0cyBhIGxpdGVyYWwgYGltcG9ydChcIm5vZGU6dXRpbFwiKWAgdGhhdCBub1xuICAvLyBicm93c2VyIGNhbiByZXNvbHZlLCBhbmQgdGhlIGNhdWdodCByZWplY3Rpb24gc3RpbGwgc3VyZmFjZWQgYXMgYSBjb25zb2xlXG4gIC8vIGVycm9yLiBgdXRpbHNgIG9ubHkgZmVlZHMgdGhlIHN0ZGVyciBicmFuY2ggb2YgdGhlIGVtaXR0ZXIgYmVsb3csIHNvIG5vXG4gIC8vIHN0ZGVyciBtZWFucyB0aGUgaW1wb3J0IGhhcyBub3RoaW5nIHRvIHNlcnZlIGFuZCBpcyBza2lwcGVkIG91dHJpZ2h0LlxuICBjb25zdCB1dGlsczogeyBpbnNwZWN0PzogYW55IH0gfCB1bmRlZmluZWQgPVxuICAgIGdsb2JhbFByb2Nlc3NTdGRFcnIgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogYXdhaXQgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqLyBub2RlVXRpbCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgcmV0dXJuIGNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRFcnIsIHV0aWxzKTtcbn1cblxuLyoqXG4gKiBUaGUgc3luY2hyb25vdXMgY29yZSBvZiB7QGxpbmsgY3JlYXRlQ29uc29sZUxvZ2dlckZhY3Rvcnl9LCBzcGxpdCBvdXQgc28gdGhlXG4gKiBzYW1lIGVtaXR0ZXIgYWxzbyBzZXJ2ZXMgYXMgdGhlIGJvb3RzdHJhcCBzaW5rIGJlZm9yZSBhbnkgYXN5bmMgZmFjdG9yeSBoYXNcbiAqIHJlc29sdmVkLiBgdXRpbHNgIGlzIGBub2RlOnV0aWxgIHdoZW4gaXQgbG9hZGVkOyB3aXRob3V0IGl0LCBvYmplY3QgYXJndW1lbnRzXG4gKiBmb3JtYXQgdGhyb3VnaCB0aGUgYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gY29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRFcnI6IGFueSxcbiAgdXRpbHM/OiB7IGluc3BlY3Q/OiBhbnkgfSB8IHVuZGVmaW5lZCxcbik6IExvZ2dlckZhY3Rvcnkge1xuICBjb25zdCBidW5JbnNwZWN0ID1cbiAgICBnbG9iYWxCdW4gIT09IHVuZGVmaW5lZCAmJiAhdG9Cb29sZWFuKGdsb2JhbEJ1bi5lbnY/LkxPR19CVU5fQ09OU09MRV9ESVNBQkxFRClcbiAgICAgID8gZ2xvYmFsQnVuLmluc3BlY3RcbiAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCByZXNldENvbG9yc1ByZWZpeCA9IGJ1bkluc3BlY3QgIT09IHVuZGVmaW5lZDtcblxuICBjb25zdCBpbnNwZWN0ID0gKGFyZzogYW55LCBjb2xvcnM/OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSB8fCAodHlwZW9mIGFyZyA9PT0gXCJvYmplY3RcIiAmJiBhcmcgIT09IG51bGwpKSB7XG4gICAgICBpZiAoYnVuSW5zcGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBidW5JbnNwZWN0KGFyZywge1xuICAgICAgICAgIGNvbG9yczogY29sb3JzLFxuICAgICAgICAgIGRlcHRoOiB1dGlscz8uaW5zcGVjdD8uZGVmYXVsdE9wdGlvbnM/LmRlcHRoID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmluc3BlY3QoYXJnLCB7XG4gICAgICAgICAgLi4udXRpbHM/Lmluc3BlY3Q/LmRlZmF1bHRPcHRpb25zLFxuICAgICAgICAgIGNvbG9yczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmcsIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHJldHVybiBcIltDaXJjdWxhcl1cIjtcbiAgICAgICAgICAgIHNlZW4uYWRkKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBmYWN0b3J5ID0gKG5hbWU/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwcmVmaXhGb3JtYXR0ZXIgPSBjcmVhdGVGb3JtYXR0ZXIobmFtZSwgZ2xvYmFsUHJvY2Vzc1N0ZEVyciwgcmVzZXRDb2xvcnNQcmVmaXgpO1xuICAgIGNvbnN0IGxvZ2dlciA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgICAgICBjb25zdCB7IHByZWZpeCwgY29sb3JzLCByZXNldENvbG9ycyB9ID0gcHJlZml4Rm9ybWF0dGVyKGxldmVsKTtcbiAgICAgICAgY29uc3QgZW1pdHRlciA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmICghc2hvdWxkRW1pdChsZXZlbCwgdHJ1ZSkpIHJldHVybjtcbiAgICAgICAgICBpZiAoZ2xvYmFsUHJvY2Vzc1N0ZEVyciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlUGFydHMgPSBwcmVmaXggPyBbcHJlZml4XSA6IFtdO1xuICAgICAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goLi4uYXJncy5tYXAoKGFyZykgPT4gaW5zcGVjdChhcmcsIGNvbG9ycykpKTtcbiAgICAgICAgICAgIGlmIChyZXNldENvbG9ycykgbWVzc2FnZVBhcnRzLnB1c2goTE9HX0xFVkVMX0NPTE9SX1JFU0VUKTtcbiAgICAgICAgICAgIGdsb2JhbFByb2Nlc3NTdGRFcnIud3JpdGUobWVzc2FnZVBhcnRzLmpvaW4oXCIgXCIpICsgXCJcXG5cIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsZXZlbEZuID0gY29uc29sZVtsZXZlbF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxldmVsRm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICBsZXZlbEZuID0gY29uc29sZS5sb2c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlZml4KSBsZXZlbEZuID0gbGV2ZWxGbi5iaW5kKGNvbnNvbGUsIHByZWZpeCk7XG4gICAgICAgICAgICBsZXZlbEZuKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFtsZXZlbCwgZW1pdHRlcl07XG4gICAgICB9KSxcbiAgICApIGFzIExvZ2dlcjtcbiAgICAvLyBDb252ZW5pZW5jZSBsZXZlbHMgc2hhcmUgdGhlIGluZm8gc2luay5cbiAgICBsb2dnZXIuc3VjY2VzcyA9IGxvZ2dlci5pbmZvO1xuICAgIGxvZ2dlci5zdGFydCA9IGxvZ2dlci5pbmZvO1xuICAgIHJldHVybiBsb2dnZXI7XG4gIH07XG4gIGNvbnN0IGRlZmF1bHRGYWN0b3J5ID0gbWVtb2l6ZShmYWN0b3J5KTtcbiAgcmV0dXJuIChuYW1lPzogc3RyaW5nKSA9PiAobmFtZSA/IGZhY3RvcnkobmFtZSkgOiBkZWZhdWx0RmFjdG9yeSgpKTtcbn1cblxuLyoqXG4gKiBGdWxsIGNvbnNvbGUgc2luayB3aXRoIG9wdGlvbmFsIGBub2RlOnV0aWxgIGluc3BlY3Rpb24uIE1lbW9pemVkIHNvXG4gKiBjb25jdXJyZW50IGFuZCByZXBlYXQgY2FsbGVycyBzaGFyZSBvbmUgaW4tZmxpZ2h0IHByb21pc2UgYW5kIHNldHRsZWQgcmVzdWx0LlxuICovXG5jb25zdCByZXNvbHZlRmFjdG9yeSA9IG1lbW9pemUoYXN5bmMgKCk6IFByb21pc2U8TG9nZ2VyRmFjdG9yeT4gPT4ge1xuICByZXR1cm4gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycik7XG59KTtcblxuLyoqXG4gKiBBY3RpdmUgZmFjdG9yeSBzdGFydHMgYXMgYSBzeW5jIGNvbnNvbGUgc2luayAobm8gYGF3YWl0YCwgc28gdGhpcyBtb2R1bGVcbiAqIGZpbmlzaGVzIGV2YWx1YXRpbmcgaW1tZWRpYXRlbHkpIGFuZCBzd2FwcyB0byB7QGxpbmsgcmVzb2x2ZUZhY3Rvcnl9J3NcbiAqIHJlc3VsdCB3aGVuIHNlcnZlci1zaWRlIGFyZ3VtZW50IGluc3BlY3Rpb24gaXMgcmVhZHkuXG4gKi9cbmxldCBhY3RpdmVGYWN0b3J5OiBMb2dnZXJGYWN0b3J5ID0gY29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycik7XG52b2lkIHJlc29sdmVGYWN0b3J5KCkudGhlbihcbiAgKGZhY3RvcnkpID0+IHtcbiAgICBhY3RpdmVGYWN0b3J5ID0gZmFjdG9yeTtcbiAgfSxcbiAgKCkgPT4ge1xuICAgIC8vIEtlZXAgdGhlIHN5bmMgY29uc29sZSBzaW5rOyBuZXZlciBsZWF2ZSBpbXBvcnRlcnMgd2l0aG91dCBhIGZhY3RvcnkuXG4gIH0sXG4pO1xuXG4vKipcbiAqIEJ1aWxkIGEgbG9nZ2VyIHRoYXQgcmViaW5kcyB3aGVuIHtAbGluayBhY3RpdmVGYWN0b3J5fSB1cGdyYWRlcy4gQ2FsbGVycyB0aGF0XG4gKiBjYXB0dXJlIGBjb25zdCBsb2cgPSBsb2dnZXIoXCJ4XCIpYCBhdCBtb2R1bGUgc2NvcGUgc3RpbGwgZ2V0IHRoZSB1cGdyYWRlZFxuICogZm9ybWF0dGVyIG9uY2UgaXQgYXJyaXZlcywgd2l0aG91dCBldmVyeSBjYWxsIHNpdGUgd2FpdGluZyBvbiBhIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcihuYW1lPzogc3RyaW5nKTogTG9nZ2VyIHtcbiAgbGV0IGJvdW5kOiB7IGZhY3Rvcnk6IExvZ2dlckZhY3Rvcnk7IGxvZ2dlcjogTG9nZ2VyIH0gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHNpbmsgPSAoKTogTG9nZ2VyID0+IHtcbiAgICBpZiAoYm91bmQ/LmZhY3RvcnkgIT09IGFjdGl2ZUZhY3RvcnkpIHtcbiAgICAgIGJvdW5kID0geyBmYWN0b3J5OiBhY3RpdmVGYWN0b3J5LCBsb2dnZXI6IGFjdGl2ZUZhY3RvcnkobmFtZSkgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJvdW5kLmxvZ2dlcjtcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBbLi4uTE9HX0xFVkVMUywgXCJzdWNjZXNzXCIsIFwic3RhcnRcIl0ubWFwKChsZXZlbCkgPT4gW1xuICAgICAgbGV2ZWwsXG4gICAgICAoLi4uYXJnczogYW55W10pID0+IHNpbmsoKVtsZXZlbCBhcyBrZXlvZiBMb2dnZXJdKC4uLmFyZ3MpLFxuICAgIF0pLFxuICApIGFzIExvZ2dlcjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIGxpbmUgcHJlZml4IG9mIGBMRVZFTCBbbmFtZV1gIG9uIE5vZGUvQnVuIGhvc3RzLCBvciBgW25hbWVdYCBhbG9uZVxuICogaW4gYnJvd3NlcnMgKGVpdGhlciBwYXJ0IG9taXR0ZWQgd2hlbiBhYnNlbnQpLiBBcHBsaWVzIHBlci1sZXZlbCBBTlNJIGNvbG9yXG4gKiB3aGVuIGBzdHJlYW1TdXBwb3J0c0NvbG9yYCBpcyB0cnVlIGZvciB0aGUgZ2l2ZW4gc3RkZXJyIHN0cmVhbS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVyKFxuICBuYW1lOiBhbnksXG4gIHN0cmVhbTogYW55LFxuICByZXNldENvbG9yc1ByZWZpeD86IGJvb2xlYW4sXG4pOiAobGV2ZWw/OiBMb2dMZXZlbCkgPT4geyBwcmVmaXg6IHN0cmluZzsgY29sb3JzOiBib29sZWFuOyByZXNldENvbG9yczogYm9vbGVhbiB9IHtcbiAgY29uc3QgZ2xvYiA9IGdsb2JhbFRoaXMgYXMgeyB3aW5kb3c/OiB1bmtub3duOyBkb2N1bWVudD86IHVua25vd24gfTtcbiAgY29uc3QgaXNCcm93c2VyID0gZ2xvYi53aW5kb3cgIT09IHVuZGVmaW5lZCAmJiBnbG9iLmRvY3VtZW50ICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IHN1cHBvcnRzQ29sb3IgPSAhaXNCcm93c2VyID8gc3RyZWFtU3VwcG9ydHNDb2xvcihzdHJlYW0pIDogZmFsc2U7XG4gIGNvbnN0IG5hbWVQcmVmaXggPSBuYW1lID8gXCJbXCIgKyBuYW1lICsgXCJdXCIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAobGV2ZWw/OiBMb2dMZXZlbCkgPT4ge1xuICAgIGNvbnN0IGNvbG9yID0gc3VwcG9ydHNDb2xvciAmJiBsZXZlbCAhPT0gdW5kZWZpbmVkID8gTE9HX0xFVkVMX0NPTE9SU1tsZXZlbF0gOiB1bmRlZmluZWQ7XG4gICAgbGV0IHByZWZpeCA9IFshaXNCcm93c2VyICYmIGxldmVsID8gbGV2ZWwudG9VcHBlckNhc2UoKSA6IHVuZGVmaW5lZCwgbmFtZVByZWZpeF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiIFwiKTtcbiAgICBsZXQgcmVzZXRDb2xvcnMgPSBmYWxzZTtcbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIGNvbnN0IGFwcGx5UmVzZXRDb2xvcnNQcmVmaXggPSByZXNldENvbG9yc1ByZWZpeCB8fCBcImluZm9cIiA9PT0gbGV2ZWw7XG4gICAgICBpZiAoIWFwcGx5UmVzZXRDb2xvcnNQcmVmaXgpIHJlc2V0Q29sb3JzID0gdHJ1ZTtcbiAgICAgIHByZWZpeCA9IGFwcGx5UmVzZXRDb2xvcnNQcmVmaXggPyBjb2xvciArIHByZWZpeCArIExPR19MRVZFTF9DT0xPUl9SRVNFVCA6IGNvbG9yICsgcHJlZml4O1xuICAgIH1cbiAgICByZXR1cm4geyBwcmVmaXgsIGNvbG9yczogY29sb3IgPyB0cnVlIDogZmFsc2UsIHJlc2V0Q29sb3JzIH07XG4gIH07XG59XG5cbi8qKiBUcnVlIHdoZW4gYHN0cmVhbWAgaXMgYSBUVFkgYW5kIHRoZSB0ZXJtaW5hbCBpcyBub3QgYGR1bWJgLiAqL1xuZnVuY3Rpb24gc3RyZWFtU3VwcG9ydHNDb2xvcihzdHJlYW0/OiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChnbG9iYWxQcm9jZXNzID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHN0cmVhbSAhPT0gXCJvYmplY3RcIiB8fCBzdHJlYW0gPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgeyBpc1RUWSB9ID0gc3RyZWFtIGFzIHsgaXNUVFk/OiB1bmtub3duIH07XG4gIGlmIChpc1RUWSAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCB0ZXJtID0gZ2xvYmFsUHJvY2Vzcy5lbnY/LlRFUk0/LnRvTG93ZXJDYXNlKCk7XG4gIGlmIChcImR1bWJcIiA9PSB0ZXJtKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogUGFyc2UgYSByYXcgdmFsdWUgYXMge0BsaW5rIExvZ0xldmVsfSAodHJpbW1lZCwgY2FzZS1pbnNlbnNpdGl2ZSkuICovXG5mdW5jdGlvbiBwYXJzZUxvZ0xldmVsKHJhdzogdW5rbm93bik6IExvZ0xldmVsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgbGV0IHRleHQgPSB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiID8gcmF3IDogU3RyaW5nKHJhdyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgaWYgKGkgPiAwKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gdGV4dC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh0ZXh0ID09PSBub3JtYWxpemVkKSBicmVhaztcbiAgICAgIHRleHQgPSBub3JtYWxpemVkO1xuICAgIH1cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAodGV4dCBpbiBMT0dfTEVWRUxfUkFOSykge1xuICAgICAgcmV0dXJuIHRleHQgYXMgTG9nTGV2ZWw7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY3RpdmUgdGhyZXNob2xkIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAsIGRlZmF1bHQge0BsaW5rIERFRkFVTFRfTEVWRUx9LiAqL1xuZnVuY3Rpb24gYWN0aXZlTGV2ZWwoKTogTG9nTGV2ZWwge1xuICByZXR1cm4gcGFyc2VMb2dMZXZlbChnbG9iYWxQcm9jZXNzPy5lbnY/LkxPR19MRVZFTCkgPz8gREVGQVVMVF9MRVZFTDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGByYXdgIG1lZXRzIHRoZSBjdXJyZW50IGBMT0dfTEVWRUxgIHRocmVzaG9sZC5cbiAqXG4gKiBQYXJzZXMgYHJhd2AgYXMgYSB7QGxpbmsgTG9nTGV2ZWx9OyB3aGVuIHBhcnNpbmcgZmFpbHMsIHJldHVybnNcbiAqIGBkZWZhdWx0UmVzdWx0YCBpZiBzdXBwbGllZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZEVtaXQocmF3OiB1bmtub3duLCBkZWZhdWx0UmVzdWx0PzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBjb25zdCBsZXZlbCA9IHBhcnNlTG9nTGV2ZWwocmF3KTtcbiAgaWYgKGxldmVsID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0UmVzdWx0ID8/IGZhbHNlO1xuICByZXR1cm4gTE9HX0xFVkVMX1JBTktbbGV2ZWxdID49IExPR19MRVZFTF9SQU5LW2FjdGl2ZUxldmVsKCldO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBjYWxsIGF0IGBsZXZlbGAgd291bGQgYmUgZW1pdHRlZCBhdCB0aGUgY3VycmVudFxuICogYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgdGhyZXNob2xkLiBVc2UgYmVmb3JlIGJ1aWxkaW5nIGV4cGVuc2l2ZSBkZWJ1Z1xuICogcGF5bG9hZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChpc0xldmVsRW5hYmxlZChcImRlYnVnXCIpKSB7XG4gKiAgIGxvZy5kZWJ1ZyhcIm1vdW50czpyZXNvbHZlclwiLCB7IGNvbnRyaWJ1dGlvbjogYXdhaXQgaGVhdnlTbmFwc2hvdCgpIH0pO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMZXZlbEVuYWJsZWQobGV2ZWw6IExvZ0xldmVsKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRFbWl0KGxldmVsKTtcbn1cblxuY29uc3QgTE9HR0VSX05BTUVfUkVHRVggPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOlxcL1xcLyk/LipcXC8oW14vLl0rKSg/OlxcLlteL10rKT8kL2k7XG5cbi8qKlxuICogRGVyaXZlIHRoZSB0YWcgc3RyaW5nIGZyb20gYSBsb2dnZXIgbmFtZSwgcGx1Z2luLCBvciBwYXRoLiBTbGFzaC0gYW5kXG4gKiBVUkwtc2hhcGVkIHN0cmluZ3MgdXNlIHRoZSBsYXN0IHBhdGggc2VnbWVudCAoZXh0ZW5zaW9uIHN0cmlwcGVkKTsgcGxhaW5cbiAqIHN0cmluZ3MgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gRW1wdHkgb3IgbWlzc2luZyBuYW1lcyAtPiBgdW5kZWZpbmVkYFxuICogKHVudGFnZ2VkIHNpbmspLlxuICovXG5mdW5jdGlvbiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lOiBOYW1lTGlrZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghbG9nZ2VyTmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBsb2dnZXJOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBsb2dnZXJOYW1lLm1hdGNoKExPR0dFUl9OQU1FX1JFR0VYKTtcbiAgICByZXR1cm4gbWF0Y2g/LlsxXSA/PyBsb2dnZXJOYW1lO1xuICB9XG4gIHJldHVybiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lLm5hbWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgdGFnZ2VkIGxvZ2dlciBmb3IgYSBwbHVnaW4gb3IgbW9kdWxlLlxuICpcbiAqIFRoZSB0YWcgaXMgYFtuYW1lXWAgd2hlbiBgbG9nZ2VyTmFtZWAgaXMgYSBub24tZW1wdHkgc3RyaW5nLCBhXG4gKiB7QGxpbmsgTmFtZUxpa2V9IHdpdGggYG5hbWVgLCBvciBhIGZpbGUgLyBVUkwgcGF0aCAodGhlIGJhc2VuYW1lIHdpdGhvdXRcbiAqIGV4dGVuc2lvbiBpcyB1c2VkKS4gVGhlIGNvbnNvbGUgc2luayBwcmVwZW5kcyBgTEVWRUwgW25hbWVdYCBvbiBOb2RlL0J1blxuICogaG9zdHMgb3IgYFtuYW1lXWAgYWxvbmUgaW4gYnJvd3NlcnMgdmlhIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9LlxuICpcbiAqIENhbGxzIGJlbG93IGBwcm9jZXNzLmVudi5MT0dfTEVWRUxgIGFyZSBkcm9wcGVkIGJ5IHtAbGluayBzaG91bGRFbWl0fSBiZWZvcmVcbiAqIHRoZSBzaW5rIGZvcm1hdHMgb3Igd3JpdGVzIHRoZSBsaW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuICpcbiAqIGNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9jaGF0XCIpO1xuICogbG9nZ2VyLmluZm8oXCJzdGFydGluZ1wiKTtcbiAqIGxvZ2dlci53YXJuKFwibWlzc2luZyBvcHRpb25hbCBjb25maWdcIiwgeyByZWFzb246IFwibm8gZW52IHZhclwiIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyKGxvZ2dlck5hbWU6IE5hbWVMaWtlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogTG9nZ2VyIHtcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWUpO1xuICByZXR1cm4gY3JlYXRlTG9nZ2VyKG5hbWUpO1xufVxuIl19
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHOzs7Ozs7Ozs7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBY3ZELE1BQU0sYUFBYSxHQUFJLFVBQXdDLENBQUMsT0FBTyxDQUFDO0FBQ3hFLE1BQU0sU0FBUyxHQUFJLFVBQWdDLENBQUMsR0FBRyxDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0gsOERBQThEO0FBQzlELE1BQU0sbUJBQW1CLEdBQ3ZCLGFBQWEsSUFBSSxPQUFPLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLFVBQVU7SUFDaEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNO0lBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFFaEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVUsQ0FBQztBQUMvRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUN2QyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDckIsQ0FBQztBQUM5QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3pDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN2QixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxPQUFPO0lBQy9CLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLE1BQU07WUFDVCxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsT0FBTztZQUMzQixNQUFNO1FBQ1IsS0FBSyxN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YUFBdUI7SUFDdkQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLGFBQWEsSUFBSSxLQUFLLENBQUM7SUFDdkQsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBZTtJQUM1QyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyx3REFBd0QsQ0FBQztBQUVuRjs7Ozs7R0FLRztBQUNILFNBQVMsaUJBQWlCLENBQUMsVUFBeUM7SUFDbEUsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNsQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsVUFBeUM7SUFDOUQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGFnZ2VkLCBsZXZlbGVkIGxvZ2dpbmcgZm9yIGV2ZXJ5IHJ1bnRpbWUgLSB0aGUgb25lIGxvZ2dlciB0aGUgd2hvbGVcbiAqIG1vbm9yZXBvIHNoYXJlcy5cbiAqXG4gKiB7QGxpbmsgbG9nZ2VyfSByZXNvbHZlcyBhIHRhZ2dlZCB7QGxpbmsgTG9nZ2VyfSB0aHJvdWdoIGEgc3luY2hyb25vdXMgY29uc29sZVxuICogc2luaywgdGhlbiB1cGdyYWRlcyBpdHMgc2VydmVyLXNpZGUgZm9ybWF0dGVyIHdoZW4gYG5vZGU6dXRpbGAgcmVzb2x2ZXMuXG4gKiBLZWVwaW5nIHRoZSBzaW5rIGRlcGVuZGVuY3ktZnJlZSBwcmV2ZW50cyBicm93c2VyIGJ1bmRsZXJzIGZyb20gcmV0YWluaW5nIGFuXG4gKiBvcHRpb25hbCBiYXJlIGltcG9ydCB0aGF0IGRvd25zdHJlYW0gYXBwcyB3b3VsZCBzdGlsbCBoYXZlIHRvIGluc3RhbGwuXG4gKiB7QGxpbmsgTG9nTGV2ZWx9IGZpbHRlcmluZyBydW5zIHRocm91Z2gge0BsaW5rIHNob3VsZEVtaXR9IGluIHBlci1sZXZlbFxuICogd3JhcHBlcnMgYXJvdW5kIHRoZSBwbGF0Zm9ybSBjb25zb2xlIG9yIHN0ZGVyciBzaW5rLlxuICpcbiAqIFRoZSBjb25zb2xlIGZhbGxiYWNrIHdyaXRlcyBmb3JtYXR0ZWQgbGluZXMgdG8gYHByb2Nlc3Muc3RkZXJyYCB3aGVuIGl0IGlzXG4gKiBhdmFpbGFibGUgKEJ1biBgaW5zcGVjdGAgcGVyIGFyZ3VtZW50IHdoZW4gYExPR19CVU5fQ09OU09MRV9ESVNBQkxFRGAgaXNcbiAqIHVuc2V0LCBvdGhlcndpc2UgYG5vZGU6dXRpbGAgYGZvcm1hdFdpdGhPcHRpb25zYCksIG9yIGRlbGVnYXRlcyB0byBnbG9iYWxcbiAqIGBjb25zb2xlLipgIHdoZW4gc3RkZXJyIG9yIGBub2RlOnV0aWxgIGlzIHVuYXZhaWxhYmxlLiBCcm93c2VyIGhvc3RzIG9taXRcbiAqIHRoZSBgTEVWRUxgIHRleHQgcHJlZml4IChkZXZ0b29scyBzaG93IHNldmVyaXR5KSBhbmQga2VlcCBvbmx5IHRoZSBgW25hbWVdYFxuICogdGFnLlxuICpcbiAqIEVudiB0b2dnbGVzOiBgTE9HX0xFVkVMYCAocmVhZCBwZXIgY2FsbCkgYW5kIGBMT0dfQlVOX0NPTlNPTEVfRElTQUJMRURgXG4gKiAocmVhZCBvbmNlIGR1cmluZyBmYWN0b3J5IGluaXQpLlxuICpcbiAqIEJyb3dzZXItc2FmZTogYHByb2Nlc3NgIC8gYEJ1bmAgLyBgd2luZG93YCAvIGBkb2N1bWVudGAgYXJlIGFsbCByZWFjaGVkXG4gKiB0aHJvdWdoIGBnbG9iYWxUaGlzYCBhbmQgZ3VhcmRlZCwgYW5kIGBub2RlOnV0aWxgIGlzIGltcG9ydGVkIE9OTFkgb24gYSBob3N0XG4gKiB0aGF0IGhhcyBgcHJvY2Vzcy5zdGRlcnJgIC0gbmV2ZXIgaW4gYSBicm93c2VyLCB3aGVyZSB0aGUgc3BlY2lmaWVyIGlzXG4gKiB1bnJlc29sdmFibGUgLSBzbyB0aGUgbW9kdWxlIHdvcmtzIGluIGFueSBydW50aW1lLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIi4vZnVuY3Rpb24udHNcIjtcbmltcG9ydCB7IHR5cGUgTmFtZUxpa2UsIHRvQm9vbGVhbiB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuXG4vKiogYHByb2Nlc3NgLXNoYXBlZCB2aWV3IG9mZiBgZ2xvYmFsVGhpc2AsIHNvIG5vIG5vZGUgdHlwZXMgYXJlIG5lZWRlZC4gKi9cbmludGVyZmFjZSBQcm9jZXNzTGlrZSB7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHN0ZGVycj86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG59XG5cbi8qKiBgQnVuYC1zaGFwZWQgdmlldyBvZmYgYGdsb2JhbFRoaXNgLCBzbyBubyBgQHR5cGVzL2J1bmAgaXMgbmVlZGVkLiAqL1xuaW50ZXJmYWNlIEJ1bkxpa2Uge1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBpbnNwZWN0PzogKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBjb2xvcnM/OiBib29sZWFuOyBkZXB0aD86IG51bWJlciB9KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IGdsb2JhbFByb2Nlc3MgPSAoZ2xvYmFsVGhpcyBhcyB7IHByb2Nlc3M/OiBQcm9jZXNzTGlrZSB9KS5wcm9jZXNzO1xuY29uc3QgZ2xvYmFsQnVuID0gKGdsb2JhbFRoaXMgYXMgeyBCdW4/OiBCdW5MaWtlIH0pLkJ1bjtcblxuLyoqXG4gKiBOb2RlIGBwcm9jZXNzLnN0ZGVycmAgd2hlbiB3cml0YWJsZSwgZWxzZSBgdW5kZWZpbmVkYCAoc3RhYmxlIGZvciB0aGVcbiAqIHByb2Nlc3MpLiBUeXBlZCBsb29zZWx5IChgYW55YCkgYmVjYXVzZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGNvbnNvbGUgc2luaydzXG4gKiBgLndyaXRlYCwgd2hpY2ggb3VyIHN0cnVjdHVyYWwge0BsaW5rIFByb2Nlc3NMaWtlfSBzaGFwZSBkb2VzIG5vdCBzYXRpc2Z5XG4gKiBub21pbmFsbHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkRXJyOiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZGVycj8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRlcnJcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgTE9HX0xFVkVMUyA9IFtcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiXSBhcyBjb25zdDtcbmNvbnN0IExPR19MRVZFTF9SQU5LID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBMT0dfTEVWRUxTLm1hcCgobGV2ZWwsIGluZGV4KSA9PiBbbGV2ZWwsIGluZGV4XSksXG4pIGFzIFJlY29yZDxMb2dMZXZlbCwgbnVtYmVyPjtcbmNvbnN0IExPR19MRVZFTF9DT0xPUlMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgIGxldCBjb2xvciA9IFwiXFx4MWJbOTBtXCI7IC8vIGdyYXlcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzRtXCI7IC8vIGJsdWVcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzNtXCI7IC8vIHllbGxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzFtXCI7IC8vIHJlZFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFtsZXZlbCwgY29sb3JdO1xuICB9KSxcbikgYXMgUmVjb3JkPExvZ0xldmVsLCBzdHJpbmc+O1xuY29uc3QgTE9HX0xFVkVMX0NPTE9SX1JFU0VUID0gXCJcXHgxYlswbVwiO1xuY29uc3QgREVGQVVMVF9MRVZFTDogTG9nTGV2ZWwgPSBcImluZm9cIjtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc2V2ZXJpdGllcywgbG93ZXN0IHRvIGhpZ2hlc3Q6IGBkZWJ1Z2AsIGBpbmZvYCwgYHdhcm5gLCBgZXJyb3JgLlxuICogQSBjYWxsIGJlbG93IHRoZSBhY3RpdmUgdGhyZXNob2xkIGlzIGRpc2NhcmRlZCBiZWZvcmUgYW55IHN0cmluZyB3b3JrIG9yXG4gKiBzaW5rIEkvTy5cbiAqXG4gKiBUaGUgdGhyZXNob2xkIGNvbWVzIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgb24gZXZlcnkgY2FsbFxuICogKGNhc2UtaW5zZW5zaXRpdmUsIGRlZmF1bHQgYGluZm9gIHdoZW4gdW5zZXQsIGVtcHR5LCBvciB1bmtub3duKSBzbyB0ZXN0XG4gKiBydW5uZXJzIGFuZCBlbWJlZGRlcnMgY2FuIGNoYW5nZSB2ZXJib3NpdHkgYWZ0ZXIgaW1wb3J0IHdpdGhvdXQgcmVzdGFydGluZ1xuICogdGhlIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gKHR5cGVvZiBMT0dfTEVWRUxTKVtudW1iZXJdO1xuXG4vKipcbiAqIERlcGVuZGVuY3ktZnJlZSBsZXZlbGVkIGxvZ2dlci4gU3RhbmRhcmQgbWV0aG9kcyBob25vciBgTE9HX0xFVkVMYDsgYHN0YXJ0YFxuICogYW5kIGBzdWNjZXNzYCBhcmUgaW5mb3JtYXRpb25hbCBhbGlhc2VzIHdpdGggZGlzdGluY3QgcHJlc2VudGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBMb2dnZXIgPSB7XG4gIFtLIGluIExvZ0xldmVsXTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufSAmIHtcbiAgLyoqIFN1Y2Nlc3MgbWVzc2FnZSBlbWl0dGVkIGF0IGBpbmZvYCBsZXZlbC4gKi9cbiAgc3VjY2VzczogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuICAvKiogU3RhcnQgLyBpbi1wcm9ncmVzcyBtZXNzYWdlIGVtaXR0ZWQgYXQgYGluZm9gIGxldmVsLiAqL1xuICBzdGFydDogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuLyoqIGAobmFtZT8pID0+IExvZ2dlcmAgc2luayBjb25zdHJ1Y3RvciByZXR1cm5lZCBieSB0aGUgaW5pdC10aW1lIGZhY3RvcnkgY2hhaW4uICovXG50eXBlIExvZ2dlckZhY3RvcnkgPSAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXG4vKipcbiAqIENvbnNvbGUge0BsaW5rIExvZ2dlckZhY3Rvcnl9OyBhbHdheXMgc3VjY2VlZHMuXG4gKlxuICogV2hlbiBgcHJvY2Vzcy5zdGRlcnJgIGlzIGF2YWlsYWJsZSwgZm9ybWF0cyBlYWNoIGxpbmUgYW5kIHdyaXRlcyBvbmx5IHRvXG4gKiBzdGRlcnIuIEJ1biBgaW5zcGVjdGAgZm9ybWF0cyBlYWNoIGFyZ3VtZW50IHdoZW4gZW5hYmxlZDsgb3RoZXJ3aXNlXG4gKiBgdXRpbC5pbnNwZWN0YCB3aGVuIGBub2RlOnV0aWxgIGxvYWRzLCBvciBhIGBKU09OLnN0cmluZ2lmeWAgZmFsbGJhY2sgd2hlblxuICogaXQgZG9lcyBub3QuIFdoZW4gc3RkZXJyIGlzIHVuYXZhaWxhYmxlIChldmVyeSBicm93c2VyKSwgYmluZHNcbiAqIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9IHByZWZpeGVzIGludG8gZ2xvYmFsIGBjb25zb2xlLipgIGNhbGxzIGFuZCBza2lwcyB0aGVcbiAqIGBub2RlOnV0aWxgIGltcG9ydCBlbnRpcmVseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55KTogUHJvbWlzZTxMb2dnZXJGYWN0b3J5PiB7XG4gIC8vIEluZGlyZWN0IHNwZWNpZmllciBzbyB0aGlzIGJyb3dzZXItc2FmZSBtb2R1bGUgZG9lc24ndCBzdGF0aWNhbGx5IHB1bGwgaW5cbiAgLy8gbm9kZSB0eXBlczogYG5vZGU6dXRpbGAgaXMgb3B0aW9uYWwgKHRoZSBKU09OIGZhbGxiYWNrIGNvdmVycyBpdHMgYWJzZW5jZSkuXG4gIGNvbnN0IG5vZGVVdGlsID0gXCJub2RlOnV0aWxcIjtcbiAgLy8gR2F0ZWQsIG5vdCBqdXN0IGNhdWdodDogdGhlIGluZGlyZWN0IHNwZWNpZmllciBkZWZlYXRzIGJ1bmRsZXIgYW5hbHlzaXMgYnlcbiAgLy8gZGVzaWduLCBzbyBhIGNsaWVudCBidWlsZCBlbWl0cyBhIGxpdGVyYWwgYGltcG9ydChcIm5vZGU6dXRpbFwiKWAgdGhhdCBub1xuICAvLyBicm93c2VyIGNhbiByZXNvbHZlLCBhbmQgdGhlIGNhdWdodCByZWplY3Rpb24gc3RpbGwgc3VyZmFjZWQgYXMgYSBjb25zb2xlXG4gIC8vIGVycm9yLiBgdXRpbHNgIG9ubHkgZmVlZHMgdGhlIHN0ZGVyciBicmFuY2ggb2YgdGhlIGVtaXR0ZXIgYmVsb3csIHNvIG5vXG4gIC8vIHN0ZGVyciBtZWFucyB0aGUgaW1wb3J0IGhhcyBub3RoaW5nIHRvIHNlcnZlIGFuZCBpcyBza2lwcGVkIG91dHJpZ2h0LlxuICBjb25zdCB1dGlsczogeyBpbnNwZWN0PzogYW55IH0gfCB1bmRlZmluZWQgPVxuICAgIGdsb2JhbFByb2Nlc3NTdGRFcnIgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogYXdhaXQgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqLyBub2RlVXRpbCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgcmV0dXJuIGNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRFcnIsIHV0aWxzKTtcbn1cblxuLyoqXG4gKiBUaGUgc3luY2hyb25vdXMgY29yZSBvZiB7QGxpbmsgY3JlYXRlQ29uc29sZUxvZ2dlckZhY3Rvcnl9LCBzcGxpdCBvdXQgc28gdGhlXG4gKiBzYW1lIGVtaXR0ZXIgYWxzbyBzZXJ2ZXMgYXMgdGhlIGJvb3RzdHJhcCBzaW5rIGJlZm9yZSBhbnkgYXN5bmMgZmFjdG9yeSBoYXNcbiAqIHJlc29sdmVkLiBgdXRpbHNgIGlzIGBub2RlOnV0aWxgIHdoZW4gaXQgbG9hZGVkOyB3aXRob3V0IGl0LCBvYmplY3QgYXJndW1lbnRzXG4gKiBmb3JtYXQgdGhyb3VnaCB0aGUgYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gY29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRFcnI6IGFueSxcbiAgdXRpbHM/OiB7IGluc3BlY3Q/OiBhbnkgfSB8IHVuZGVmaW5lZCxcbik6IExvZ2dlckZhY3Rvcnkge1xuICBjb25zdCBidW5JbnNwZWN0ID1cbiAgICBnbG9iYWxCdW4gIT09IHVuZGVmaW5lZCAmJiAhdG9Cb29sZWFuKGdsb2JhbEJ1bi5lbnY/LkxPR19CVU5fQ09OU09MRV9ESVNBQkxFRClcbiAgICAgID8gZ2xvYmFsQnVuLmluc3BlY3RcbiAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCByZXNldENvbG9yc1ByZWZpeCA9IGJ1bkluc3BlY3QgIT09IHVuZGVmaW5lZDtcblxuICBjb25zdCBpbnNwZWN0ID0gKGFyZzogYW55LCBjb2xvcnM/OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSB8fCAodHlwZW9mIGFyZyA9PT0gXCJvYmplY3RcIiAmJiBhcmcgIT09IG51bGwpKSB7XG4gICAgICBpZiAoYnVuSW5zcGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBidW5JbnNwZWN0KGFyZywge1xuICAgICAgICAgIGNvbG9yczogY29sb3JzLFxuICAgICAgICAgIGRlcHRoOiB1dGlscz8uaW5zcGVjdD8uZGVmYXVsdE9wdGlvbnM/LmRlcHRoID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmluc3BlY3QoYXJnLCB7XG4gICAgICAgICAgLi4udXRpbHM/Lmluc3BlY3Q/LmRlZmF1bHRPcHRpb25zLFxuICAgICAgICAgIGNvbG9yczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmcsIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHJldHVybiBcIltDaXJjdWxhcl1cIjtcbiAgICAgICAgICAgIHNlZW4uYWRkKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBmYWN0b3J5ID0gKG5hbWU/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwcmVmaXhGb3JtYXR0ZXIgPSBjcmVhdGVGb3JtYXR0ZXIobmFtZSwgZ2xvYmFsUHJvY2Vzc1N0ZEVyciwgcmVzZXRDb2xvcnNQcmVmaXgpO1xuICAgIGNvbnN0IGxvZ2dlciA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgICAgICBjb25zdCB7IHByZWZpeCwgY29sb3JzLCByZXNldENvbG9ycyB9ID0gcHJlZml4Rm9ybWF0dGVyKGxldmVsKTtcbiAgICAgICAgY29uc3QgZW1pdHRlciA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmICghc2hvdWxkRW1pdChsZXZlbCwgdHJ1ZSkpIHJldHVybjtcbiAgICAgICAgICBpZiAoZ2xvYmFsUHJvY2Vzc1N0ZEVyciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlUGFydHMgPSBwcmVmaXggPyBbcHJlZml4XSA6IFtdO1xuICAgICAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goLi4uYXJncy5tYXAoKGFyZykgPT4gaW5zcGVjdChhcmcsIGNvbG9ycykpKTtcbiAgICAgICAgICAgIGlmIChyZXNldENvbG9ycykgbWVzc2FnZVBhcnRzLnB1c2goTE9HX0xFVkVMX0NPTE9SX1JFU0VUKTtcbiAgICAgICAgICAgIGdsb2JhbFByb2Nlc3NTdGRFcnIud3JpdGUobWVzc2FnZVBhcnRzLmpvaW4oXCIgXCIpICsgXCJcXG5cIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsZXZlbEZuID0gY29uc29sZVtsZXZlbF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxldmVsRm4gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICBsZXZlbEZuID0gY29uc29sZS5sb2c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlZml4KSBsZXZlbEZuID0gbGV2ZWxGbi5iaW5kKGNvbnNvbGUsIHByZWZpeCk7XG4gICAgICAgICAgICBsZXZlbEZuKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFtsZXZlbCwgZW1pdHRlcl07XG4gICAgICB9KSxcbiAgICApIGFzIExvZ2dlcjtcbiAgICAvLyBDb252ZW5pZW5jZSBsZXZlbHMgc2hhcmUgdGhlIGluZm8gc2luay5cbiAgICBsb2dnZXIuc3VjY2VzcyA9IGxvZ2dlci5pbmZvO1xuICAgIGxvZ2dlci5zdGFydCA9IGxvZ2dlci5pbmZvO1xuICAgIHJldHVybiBsb2dnZXI7XG4gIH07XG4gIGNvbnN0IGRlZmF1bHRGYWN0b3J5ID0gbWVtb2l6ZShmYWN0b3J5KTtcbiAgcmV0dXJuIChuYW1lPzogc3RyaW5nKSA9PiAobmFtZSA/IGZhY3RvcnkobmFtZSkgOiBkZWZhdWx0RmFjdG9yeSgpKTtcbn1cblxuLyoqXG4gKiBGdWxsIGNvbnNvbGUgc2luayB3aXRoIG9wdGlvbmFsIGBub2RlOnV0aWxgIGluc3BlY3Rpb24uIE1lbW9pemVkIHNvXG4gKiBjb25jdXJyZW50IGFuZCByZXBlYXQgY2FsbGVycyBzaGFyZSBvbmUgaW4tZmxpZ2h0IHByb21pc2UgYW5kIHNldHRsZWQgcmVzdWx0LlxuICovXG5jb25zdCByZXNvbHZlRmFjdG9yeSA9IG1lbW9pemUoYXN5bmMgKCk6IFByb21pc2U8TG9nZ2VyRmFjdG9yeT4gPT4ge1xuICByZXR1cm4gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycik7XG59KTtcblxuLyoqXG4gKiBBY3RpdmUgZmFjdG9yeSBzdGFydHMgYXMgYSBzeW5jIGNvbnNvbGUgc2luayAobm8gYGF3YWl0YCwgc28gdGhpcyBtb2R1bGVcbiAqIGZpbmlzaGVzIGV2YWx1YXRpbmcgaW1tZWRpYXRlbHkpIGFuZCBzd2FwcyB0byB7QGxpbmsgcmVzb2x2ZUZhY3Rvcnl9J3NcbiAqIHJlc3VsdCB3aGVuIHNlcnZlci1zaWRlIGFyZ3VtZW50IGluc3BlY3Rpb24gaXMgcmVhZHkuXG4gKi9cbmxldCBhY3RpdmVGYWN0b3J5OiBMb2dnZXJGYWN0b3J5ID0gY29uc29sZUxvZ2dlckZhY3RvcnkoZ2xvYmFsUHJvY2Vzc1N0ZEVycik7XG52b2lkIHJlc29sdmVGYWN0b3J5KCkudGhlbihcbiAgKGZhY3RvcnkpID0+IHtcbiAgICBhY3RpdmVGYWN0b3J5ID0gZmFjdG9yeTtcbiAgfSxcbiAgKCkgPT4ge1xuICAgIC8vIEtlZXAgdGhlIHN5bmMgY29uc29sZSBzaW5rOyBuZXZlciBsZWF2ZSBpbXBvcnRlcnMgd2l0aG91dCBhIGZhY3RvcnkuXG4gIH0sXG4pO1xuXG4vKipcbiAqIEJ1aWxkIGEgbG9nZ2VyIHRoYXQgcmViaW5kcyB3aGVuIHtAbGluayBhY3RpdmVGYWN0b3J5fSB1cGdyYWRlcy4gQ2FsbGVycyB0aGF0XG4gKiBjYXB0dXJlIGBjb25zdCBsb2cgPSBsb2dnZXIoXCJ4XCIpYCBhdCBtb2R1bGUgc2NvcGUgc3RpbGwgZ2V0IHRoZSB1cGdyYWRlZFxuICogZm9ybWF0dGVyIG9uY2UgaXQgYXJyaXZlcywgd2l0aG91dCBldmVyeSBjYWxsIHNpdGUgd2FpdGluZyBvbiBhIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcihuYW1lPzogc3RyaW5nKTogTG9nZ2VyIHtcbiAgbGV0IGJvdW5kOiB7IGZhY3Rvcnk6IExvZ2dlckZhY3Rvcnk7IGxvZ2dlcjogTG9nZ2VyIH0gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHNpbmsgPSAoKTogTG9nZ2VyID0+IHtcbiAgICBpZiAoYm91bmQ/LmZhY3RvcnkgIT09IGFjdGl2ZUZhY3RvcnkpIHtcbiAgICAgIGJvdW5kID0geyBmYWN0b3J5OiBhY3RpdmVGYWN0b3J5LCBsb2dnZXI6IGFjdGl2ZUZhY3RvcnkobmFtZSkgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJvdW5kLmxvZ2dlcjtcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBbLi4uTE9HX0xFVkVMUywgXCJzdWNjZXNzXCIsIFwic3RhcnRcIl0ubWFwKChsZXZlbCkgPT4gW1xuICAgICAgbGV2ZWwsXG4gICAgICAoLi4uYXJnczogYW55W10pID0+IHNpbmsoKVtsZXZlbCBhcyBrZXlvZiBMb2dnZXJdKC4uLmFyZ3MpLFxuICAgIF0pLFxuICApIGFzIExvZ2dlcjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIGxpbmUgcHJlZml4IG9mIGBMRVZFTCBbbmFtZV1gIG9uIE5vZGUvQnVuIGhvc3RzLCBvciBgW25hbWVdYCBhbG9uZVxuICogaW4gYnJvd3NlcnMgKGVpdGhlciBwYXJ0IG9taXR0ZWQgd2hlbiBhYnNlbnQpLiBBcHBsaWVzIHBlci1sZXZlbCBBTlNJIGNvbG9yXG4gKiB3aGVuIGBzdHJlYW1TdXBwb3J0c0NvbG9yYCBpcyB0cnVlIGZvciB0aGUgZ2l2ZW4gc3RkZXJyIHN0cmVhbS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVyKFxuICBuYW1lOiBhbnksXG4gIHN0cmVhbTogYW55LFxuICByZXNldENvbG9yc1ByZWZpeD86IGJvb2xlYW4sXG4pOiAobGV2ZWw/OiBMb2dMZXZlbCkgPT4geyBwcmVmaXg6IHN0cmluZzsgY29sb3JzOiBib29sZWFuOyByZXNldENvbG9yczogYm9vbGVhbiB9IHtcbiAgY29uc3QgZ2xvYiA9IGdsb2JhbFRoaXMgYXMgeyB3aW5kb3c/OiB1bmtub3duOyBkb2N1bWVudD86IHVua25vd24gfTtcbiAgY29uc3QgaXNCcm93c2VyID0gZ2xvYi53aW5kb3cgIT09IHVuZGVmaW5lZCAmJiBnbG9iLmRvY3VtZW50ICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IHN1cHBvcnRzQ29sb3IgPSAhaXNCcm93c2VyID8gc3RyZWFtU3VwcG9ydHNDb2xvcihzdHJlYW0pIDogZmFsc2U7XG4gIGNvbnN0IG5hbWVQcmVmaXggPSBuYW1lID8gXCJbXCIgKyBuYW1lICsgXCJdXCIgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAobGV2ZWw/OiBMb2dMZXZlbCkgPT4ge1xuICAgIGNvbnN0IGNvbG9yID0gc3VwcG9ydHNDb2xvciAmJiBsZXZlbCAhPT0gdW5kZWZpbmVkID8gTE9HX0xFVkVMX0NPTE9SU1tsZXZlbF0gOiB1bmRlZmluZWQ7XG4gICAgbGV0IHByZWZpeCA9IFshaXNCcm93c2VyICYmIGxldmVsID8gbGV2ZWwudG9VcHBlckNhc2UoKSA6IHVuZGVmaW5lZCwgbmFtZVByZWZpeF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiIFwiKTtcbiAgICBsZXQgcmVzZXRDb2xvcnMgPSBmYWxzZTtcbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIGNvbnN0IGFwcGx5UmVzZXRDb2xvcnNQcmVmaXggPSByZXNldENvbG9yc1ByZWZpeCB8fCBcImluZm9cIiA9PT0gbGV2ZWw7XG4gICAgICBpZiAoIWFwcGx5UmVzZXRDb2xvcnNQcmVmaXgpIHJlc2V0Q29sb3JzID0gdHJ1ZTtcbiAgICAgIHByZWZpeCA9IGFwcGx5UmVzZXRDb2xvcnNQcmVmaXggPyBjb2xvciArIHByZWZpeCArIExPR19MRVZFTF9DT0xPUl9SRVNFVCA6IGNvbG9yICsgcHJlZml4O1xuICAgIH1cbiAgICByZXR1cm4geyBwcmVmaXgsIGNvbG9yczogY29sb3IgPyB0cnVlIDogZmFsc2UsIHJlc2V0Q29sb3JzIH07XG4gIH07XG59XG5cbi8qKiBUcnVlIHdoZW4gYHN0cmVhbWAgaXMgYSBUVFkgYW5kIHRoZSB0ZXJtaW5hbCBpcyBub3QgYGR1bWJgLiAqL1xuZnVuY3Rpb24gc3RyZWFtU3VwcG9ydHNDb2xvcihzdHJlYW0/OiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChnbG9iYWxQcm9jZXNzID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHN0cmVhbSAhPT0gXCJvYmplY3RcIiB8fCBzdHJlYW0gPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgeyBpc1RUWSB9ID0gc3RyZWFtIGFzIHsgaXNUVFk/OiB1bmtub3duIH07XG4gIGlmIChpc1RUWSAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCB0ZXJtID0gZ2xvYmFsUHJvY2Vzcy5lbnY/LlRFUk0/LnRvTG93ZXJDYXNlKCk7XG4gIGlmIChcImR1bWJcIiA9PSB0ZXJtKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogUGFyc2UgYSByYXcgdmFsdWUgYXMge0BsaW5rIExvZ0xldmVsfSAodHJpbW1lZCwgY2FzZS1pbnNlbnNpdGl2ZSkuICovXG5mdW5jdGlvbiBwYXJzZUxvZ0xldmVsKHJhdzogdW5rbm93bik6IExvZ0xldmVsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgbGV0IHRleHQgPSB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiID8gcmF3IDogU3RyaW5nKHJhdyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgaWYgKGkgPiAwKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gdGV4dC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh0ZXh0ID09PSBub3JtYWxpemVkKSBicmVhaztcbiAgICAgIHRleHQgPSBub3JtYWxpemVkO1xuICAgIH1cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAodGV4dCBpbiBMT0dfTEVWRUxfUkFOSykge1xuICAgICAgcmV0dXJuIHRleHQgYXMgTG9nTGV2ZWw7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY3RpdmUgdGhyZXNob2xkIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAsIGRlZmF1bHQge0BsaW5rIERFRkFVTFRfTEVWRUx9LiAqL1xuZnVuY3Rpb24gYWN0aXZlTGV2ZWwoKTogTG9nTGV2ZWwge1xuICByZXR1cm4gcGFyc2VMb2dMZXZlbChnbG9iYWxQcm9jZXNzPy5lbnY/LkxPR19MRVZFTCkgPz8gREVGQVVMVF9MRVZFTDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGByYXdgIG1lZXRzIHRoZSBjdXJyZW50IGBMT0dfTEVWRUxgIHRocmVzaG9sZC5cbiAqXG4gKiBQYXJzZXMgYHJhd2AgYXMgYSB7QGxpbmsgTG9nTGV2ZWx9OyB3aGVuIHBhcnNpbmcgZmFpbHMsIHJldHVybnNcbiAqIGBkZWZhdWx0UmVzdWx0YCBpZiBzdXBwbGllZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZEVtaXQocmF3OiB1bmtub3duLCBkZWZhdWx0UmVzdWx0PzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBjb25zdCBsZXZlbCA9IHBhcnNlTG9nTGV2ZWwocmF3KTtcbiAgaWYgKGxldmVsID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0UmVzdWx0ID8/IGZhbHNlO1xuICByZXR1cm4gTE9HX0xFVkVMX1JBTktbbGV2ZWxdID49IExPR19MRVZFTF9SQU5LW2FjdGl2ZUxldmVsKCldO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBjYWxsIGF0IGBsZXZlbGAgd291bGQgYmUgZW1pdHRlZCBhdCB0aGUgY3VycmVudFxuICogYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgdGhyZXNob2xkLiBVc2UgYmVmb3JlIGJ1aWxkaW5nIGV4cGVuc2l2ZSBkZWJ1Z1xuICogcGF5bG9hZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChpc0xldmVsRW5hYmxlZChcImRlYnVnXCIpKSB7XG4gKiAgIGxvZy5kZWJ1ZyhcIm1vdW50czpyZXNvbHZlclwiLCB7IGNvbnRyaWJ1dGlvbjogYXdhaXQgaGVhdnlTbmFwc2hvdCgpIH0pO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMZXZlbEVuYWJsZWQobGV2ZWw6IExvZ0xldmVsKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRFbWl0KGxldmVsKTtcbn1cblxuY29uc3QgTE9HR0VSX05BTUVfUkVHRVggPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOlxcL1xcLyk/LipcXC8oW14vLl0rKSg/OlxcLlteL10rKT8kL2k7XG5cbi8qKlxuICogRGVyaXZlIHRoZSB0YWcgc3RyaW5nIGZyb20gYSBsb2dnZXIgbmFtZSwgcGx1Z2luLCBvciBwYXRoLiBTbGFzaC0gYW5kXG4gKiBVUkwtc2hhcGVkIHN0cmluZ3MgdXNlIHRoZSBsYXN0IHBhdGggc2VnbWVudCAoZXh0ZW5zaW9uIHN0cmlwcGVkKTsgcGxhaW5cbiAqIHN0cmluZ3MgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gRW1wdHkgb3IgbWlzc2luZyBuYW1lcyAtPiBgdW5kZWZpbmVkYFxuICogKHVudGFnZ2VkIHNpbmspLlxuICovXG5mdW5jdGlvbiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lOiBOYW1lTGlrZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghbG9nZ2VyTmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBsb2dnZXJOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBsb2dnZXJOYW1lLm1hdGNoKExPR0dFUl9OQU1FX1JFR0VYKTtcbiAgICByZXR1cm4gbWF0Y2g/LlsxXSA/PyBsb2dnZXJOYW1lO1xuICB9XG4gIHJldHVybiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lLm5hbWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgdGFnZ2VkIGxvZ2dlciBmb3IgYSBwbHVnaW4gb3IgbW9kdWxlLlxuICpcbiAqIFRoZSB0YWcgaXMgYFtuYW1lXWAgd2hlbiBgbG9nZ2VyTmFtZWAgaXMgYSBub24tZW1wdHkgc3RyaW5nLCBhXG4gKiB7QGxpbmsgTmFtZUxpa2V9IHdpdGggYG5hbWVgLCBvciBhIGZpbGUgLyBVUkwgcGF0aCAodGhlIGJhc2VuYW1lIHdpdGhvdXRcbiAqIGV4dGVuc2lvbiBpcyB1c2VkKS4gVGhlIGNvbnNvbGUgc2luayBwcmVwZW5kcyBgTEVWRUwgW25hbWVdYCBvbiBOb2RlL0J1blxuICogaG9zdHMgb3IgYFtuYW1lXWAgYWxvbmUgaW4gYnJvd3NlcnMgdmlhIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9LlxuICpcbiAqIENhbGxzIGJlbG93IGBwcm9jZXNzLmVudi5MT0dfTEVWRUxgIGFyZSBkcm9wcGVkIGJ5IHtAbGluayBzaG91bGRFbWl0fSBiZWZvcmVcbiAqIHRoZSBzaW5rIGZvcm1hdHMgb3Igd3JpdGVzIHRoZSBsaW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuICpcbiAqIGNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9jaGF0XCIpO1xuICogbG9nZ2VyLmluZm8oXCJzdGFydGluZ1wiKTtcbiAqIGxvZ2dlci53YXJuKFwibWlzc2luZyBvcHRpb25hbCBjb25maWdcIiwgeyByZWFzb246IFwibm8gZW52IHZhclwiIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyKGxvZ2dlck5hbWU6IE5hbWVMaWtlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogTG9nZ2VyIHtcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWUpO1xuICByZXR1cm4gY3JlYXRlTG9nZ2VyKG5hbWUpO1xufVxuIl19
|
package/lib/src/object.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ export type Container<T = unknown> = Iterable<T>;
|
|
|
40
40
|
* emptiness check ({@link isEmpty}).
|
|
41
41
|
*/
|
|
42
42
|
export type Collection<T> = ReadonlyArray<T> | ReadonlySet<T> | ReadonlyMap<unknown, T>;
|
|
43
|
+
/** Non-empty tuple used where an API requires at least one value. */
|
|
43
44
|
export type OneOrMany<T> = [T, ...T[]];
|
|
44
45
|
/** Narrow a readonly array to a non-empty {@link OneOrMany} tuple. */
|
|
45
46
|
export declare function isOneOrMany<T = unknown>(value: readonly T[]): value is OneOrMany<T>;
|
|
@@ -344,6 +345,7 @@ export declare function generator<T>(...items: readonly (T | Iterable<T> | null
|
|
|
344
345
|
export interface NameLike {
|
|
345
346
|
name?: string;
|
|
346
347
|
}
|
|
348
|
+
/** Property keys of `T` whose values are not callable. */
|
|
347
349
|
export type NonFunctionKeys<T> = {
|
|
348
350
|
[K in keyof T]: T[K] extends (...args: any[]) => any ? never : K;
|
|
349
351
|
}[keyof T];
|