@bitgo-beta/sdk-coin-canton 1.0.1-beta.232 → 1.0.1-beta.234

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.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM3F,OAAO,EAA+C,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG7F,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMlD;;;;;OAKG;IACH,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB;IAkI9F;;;;;OAKG;IACH,kCAAkC,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM;IAKpE,wCAAwC,CAAC,yBAAyB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlG;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAO1C;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAKjC;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;CAGlC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM3F,OAAO,EAA+C,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG7F,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMlD;;;;;OAKG;IACH,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB;IAkI9F;;;;;OAKG;IACH,kCAAkC,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM;IAKpE,wCAAwC,CAAC,yBAAyB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlG;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAO1C;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAKjC;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;CAGlC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -27,7 +27,9 @@ class Utils {
27
27
  /** @inheritdoc */
28
28
  isValidBlockId(hash) {
29
29
  // In canton, there is no block hash, we store the height as the _id (hash)
30
- const blockHeight = Number(hash);
30
+ // this will be of the form, <blockHeight>_<version>
31
+ const [height] = hash.split('_');
32
+ const blockHeight = Number(height);
31
33
  return !isNaN(blockHeight) && blockHeight > 0;
32
34
  }
33
35
  /** @inheritdoc */
@@ -358,4 +360,4 @@ class Utils {
358
360
  exports.Utils = Utils;
359
361
  const utils = new Utils();
360
362
  exports.default = utils;
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxvREFBNEI7QUFFNUIsbURBQTJGO0FBRTNGLDBEQUEwRTtBQUMxRSx5RkFBbUY7QUFFbkYseUNBQW1GO0FBSW5GLE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLGlFQUFpRTtRQUNqRSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsMkVBQTJFO1FBQzNFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FB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QUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IEJhc2VVdGlscywgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgY29tcHV0ZVByZXBhcmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaGFzaC9oYXNoLmpzJztcbmltcG9ydCB7IFByZXBhcmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG8vcHJlcGFyZWRUcmFuc2FjdGlvbi5qcyc7XG5cbmltcG9ydCB7IENyeXB0b0tleUZvcm1hdCwgU2lnbmluZ0FsZ29yaXRobVNwZWMsIFNpZ25pbmdLZXlTcGVjIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBQcmVwYXJlZFRyYW5zYWN0aW9uIGFzIElQcmVwYXJlZFRyYW5zYWN0aW9uLCBQcmVwYXJlZFR4blBhcnNlZEluZm8gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFJlY29yZEZpZWxkIH0gZnJvbSAnLi9yZXNvdXJjZXNJbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhZGRyZXNzIHx8IGFkZHJlc3MudHJpbSgpID09PSAnJykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IFtwYXJ0eUhpbnQsIGZpbmdlcnByaW50XSA9IGFkZHJlc3MudHJpbSgpLnNwbGl0KCc6OicpO1xuICAgIGlmICghZmluZ2VycHJpbnQpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhbGwgbWVtb0lkcyBhcmUgY29uc2lkZXJlZCB2YWxpZCBhcyBsb25nIGFzIHN0cmluZ3MgYXJlIHBhc3NlZFxuICAgIGNvbnN0IFtmaW5nZXJwcmludFBhcnRdID0gZmluZ2VycHJpbnQudHJpbSgpLnNwbGl0KCc/bWVtb0lkPScpO1xuICAgIGlmICghcGFydHlIaW50IHx8ICFmaW5nZXJwcmludFBhcnQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQ2FudG9uSGV4KGZpbmdlcnByaW50UGFydCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gSW4gY2FudG9uLCB0aGVyZSBpcyBubyBibG9jayBoYXNoLCB3ZSBzdG9yZSB0aGUgaGVpZ2h0IGFzIHRoZSBfaWQgKGhhc2gpXG4gICAgY29uc3QgYmxvY2tIZWlnaHQgPSBOdW1iZXIoaGFzaCk7XG4gICAgcmV0dXJuICFpc05hTihibG9ja0hlaWdodCkgJiYgYmxvY2tIZWlnaHQgPiAwO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIGlucHV0IGlzIGEgdmFsaWQgY2FudG9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlIHRoZSBoZXggc3RyaW5nIHZhbHVlXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkQ2FudG9uSGV4KHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdleCA9IC9eW2EtZkEtRjAtOV17Njh9JC87XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY29udmVydCBoZXggdmFsdWUgdG8gYmFzZTY0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBoZXhTdHJpbmcgLSBoZXggZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMge1N0cmluZ30gYmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gICAqL1xuICBnZXRCYXNlNjRGcm9tSGV4KGhleFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaGV4U3RyaW5nLCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjcmVhdGUgZmluZ2VycHJpbnQgKHBhcnQgb2YgdGhlIGNhbnRvbiBwYXJ0eUlkKSBmcm9tIHB1YmxpYyBrZXlcbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YmxpY0tleSB0aGUgcHVibGljIGtleVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuc2lnbmluZ1B1YmxpY0tleUZyb21FZDI1NTE5KHB1YmxpY0tleSk7XG4gICAgY29uc3QgaGFzaFB1cnBvc2UgPSAxMjtcbiAgICByZXR1cm4gdGhpcy5jb21wdXRlU2hhMjU2Q2FudG9uSGFzaChoYXNoUHVycG9zZSwga2V5LnB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHBhcnNlIHJhdyBjYW50b24gdHJhbnNhY3Rpb24gJiBnZXQgcmVxdWlyZWQgZGF0YVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcmF3RGF0YSBiYXNlNjQgZW5jb2RlZCBzdHJpbmdcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHR4VHlwZSB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcmV0dXJucyB7UHJlcGFyZWRUeG5QYXJzZWRJbmZvfVxuICAgKi9cbiAgcGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEocmF3RGF0YTogc3RyaW5nLCB0eFR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IFByZXBhcmVkVHhuUGFyc2VkSW5mbyB7XG4gICAgY29uc3QgZGVjb2RlZERhdGEgPSB0aGlzLmRlY29kZVByZXBhcmVkVHJhbnNhY3Rpb24ocmF3RGF0YSk7XG4gICAgbGV0IHNlbmRlciA9ICcnO1xuICAgIGxldCByZWNlaXZlciA9ICcnO1xuICAgIGxldCBhbW91bnQgPSAnJztcbiAgICBsZXQgbWVtb0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHByZUFwcHJvdmFsTm9kZTogUmVjb3JkRmllbGRbXSA9IFtdO1xuICAgIGxldCB0cmFuc2Zlck5vZGU6IFJlY29yZEZpZWxkW10gPSBbXTtcbiAgICBsZXQgdHJhbnNmZXJBY2NlcHRSZWplY3ROb2RlOiBSZWNvcmRGaWVsZFtdID0gW107XG4gICAgY29uc3Qgbm9kZXMgPSBkZWNvZGVkRGF0YS50cmFuc2FjdGlvbj8ubm9kZXM7XG5cbiAgICBub2Rlcz8uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbmVkTm9kZSA9IG5vZGUudmVyc2lvbmVkTm9kZTtcbiAgICAgIGlmICghdmVyc2lvbmVkTm9kZSB8fCB2ZXJzaW9uZWROb2RlLm9uZW9mS2luZCAhPT0gJ3YxJykgcmV0dXJuO1xuICAgICAgY29uc3QgdjFOb2RlID0gdmVyc2lvbmVkTm9kZS52MTtcbiAgICAgIGNvbnN0IG5vZGVUeXBlID0gdjFOb2RlLm5vZGVUeXBlO1xuICAgICAgaWYgKG5vZGVUeXBlLm9uZW9mS2luZCAhPT0gJ2NyZWF0ZScpIHJldHVybjtcbiAgICAgIGNvbnN0IGNyZWF0ZU5vZGUgPSBub2RlVHlwZS5jcmVhdGU7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGNyZWF0ZU5vZGUudGVtcGxhdGVJZDtcbiAgICAgIGNvbnN0IGFyZ1N1bSA9IGNyZWF0ZU5vZGUuYXJndW1lbnQ/LnN1bTtcbiAgICAgIGlmICghYXJnU3VtIHx8IGFyZ1N1bS5vbmVvZktpbmQgIT09ICdyZWNvcmQnKSByZXR1cm47XG4gICAgICBjb25zdCBmaWVsZHMgPSBhcmdTdW0ucmVjb3JkPy5maWVsZHM7XG4gICAgICBpZiAoIWZpZWxkcykgcmV0dXJuO1xuICAgICAgaWYgKFxuICAgICAgICB0ZW1wbGF0ZT8uZW50aXR5TmFtZSA9PT0gJ1RyYW5zZmVyUHJlYXBwcm92YWxQcm9wb3NhbCcgJiZcbiAgICAgICAgIXByZUFwcHJvdmFsTm9kZS5sZW5ndGggJiZcbiAgICAgICAgdHhUeXBlID09PSBUcmFuc2FjdGlvblR5cGUuT25lU3RlcFByZUFwcHJvdmFsXG4gICAgICApIHtcbiAgICAgICAgcHJlQXBwcm92YWxOb2RlID0gZmllbGRzO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0ZW1wbGF0ZT8uZW50aXR5TmFtZSA9PT0gJ0FtdWxldCcgJiZcbiAgICAgICAgIXRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZS5sZW5ndGggJiZcbiAgICAgICAgKHR4VHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNjZXB0IHx8IHR4VHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyUmVqZWN0KVxuICAgICAgKSB7XG4gICAgICAgIHRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZSA9IGZpZWxkcztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG5vZGVzPy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBjb25zdCB2ZXJzaW9uZWROb2RlID0gbm9kZS52ZXJzaW9uZWROb2RlO1xuICAgICAgaWYgKCF2ZXJzaW9uZWROb2RlIHx8IHZlcnNpb25lZE5vZGUub25lb2ZLaW5kICE9PSAndjEnKSByZXR1cm47XG4gICAgICBjb25zdCB2MU5vZGUgPSB2ZXJzaW9uZWROb2RlLnYxO1xuICAgICAgY29uc3Qgbm9kZVR5cGUgPSB2MU5vZGUubm9kZVR5cGU7XG4gICAgICBpZiAobm9kZVR5cGUub25lb2ZLaW5kICE9PSAnZXhlcmNpc2UnKSByZXR1cm47XG4gICAgICBjb25zdCBleGVyY2lzZU5vZGUgPSBub2RlVHlwZS5leGVyY2lzZTtcbiAgICAgIGNvbnN0IGNob2ljZUlkID0gZXhlcmNpc2VOb2RlLmNob2ljZUlkO1xuICAgICAgaWYgKCFjaG9pY2VJZCB8fCBjaG9pY2VJZCAhPT0gJ1RyYW5zZmVyRmFjdG9yeV9UcmFuc2ZlcicpIHJldHVybjtcbiAgICAgIGNvbnN0IGFyZ1N1bSA9IGV4ZXJjaXNlTm9kZS5jaG9zZW5WYWx1ZT8uc3VtO1xuICAgICAgaWYgKCFhcmdTdW0gfHwgYXJnU3VtLm9uZW9mS2luZCAhPT0gJ3JlY29yZCcpIHJldHVybjtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IGFyZ1N1bS5yZWNvcmQ/LmZpZWxkcztcbiAgICAgIGlmICghZmllbGRzKSByZXR1cm47XG4gICAgICB0cmFuc2Zlck5vZGUgPSBmaWVsZHM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBnZXRGaWVsZCA9IChmaWVsZHM6IFJlY29yZEZpZWxkW10sIGxhYmVsOiBzdHJpbmcpID0+IGZpZWxkcy5maW5kKChmKSA9PiBmLmxhYmVsID09PSBsYWJlbCk/LnZhbHVlPy5zdW07XG5cbiAgICBpZiAocHJlQXBwcm92YWxOb2RlLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVjZWl2ZXJEYXRhID0gZ2V0RmllbGQocHJlQXBwcm92YWxOb2RlLCAncmVjZWl2ZXInKTtcbiAgICAgIGlmIChyZWNlaXZlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSByZWNlaXZlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICBjb25zdCBwcm92aWRlckRhdGEgPSBnZXRGaWVsZChwcmVBcHByb3ZhbE5vZGUsICdwcm92aWRlcicpO1xuICAgICAgaWYgKHByb3ZpZGVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBwcm92aWRlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICBhbW91bnQgPSAnMCc7XG4gICAgfSBlbHNlIGlmICh0cmFuc2Zlck5vZGUubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0cmFuc2ZlckZpZWxkID0gdHJhbnNmZXJOb2RlLmZpbmQoKGYpID0+IGYubGFiZWwgPT09ICd0cmFuc2ZlcicpO1xuICAgICAgY29uc3QgdHJhbnNmZXJTdW0gPSB0cmFuc2ZlckZpZWxkPy52YWx1ZT8uc3VtO1xuICAgICAgaWYgKHRyYW5zZmVyU3VtICYmIHRyYW5zZmVyU3VtLm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmZXJSZWNvcmQgPSB0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcztcbiAgICAgICAgaWYgKHRyYW5zZmVyUmVjb3JkPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBzZW5kZXJEYXRhID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsICdzZW5kZXInKTtcbiAgICAgICAgICBpZiAoc2VuZGVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBzZW5kZXJEYXRhLnBhcnR5ID8/ICcnO1xuXG4gICAgICAgICAgY29uc3QgcmVjZWl2ZXJEYXRhID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsICdyZWNlaXZlcicpO1xuICAgICAgICAgIGlmIChyZWNlaXZlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSByZWNlaXZlckRhdGEucGFydHkgPz8gJyc7XG5cbiAgICAgICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsICdhbW91bnQnKTtcbiAgICAgICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcblxuICAgICAgICAgIGNvbnN0IG1ldGFGaWVsZCA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAnbWV0YScpO1xuICAgICAgICAgIGlmIChtZXRhRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFGaWVsZHMgPSBtZXRhRmllbGQucmVjb3JkPy5maWVsZHM7XG4gICAgICAgICAgICBpZiAobWV0YUZpZWxkcyAmJiBtZXRhRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZXNGaWVsZCA9IGdldEZpZWxkKG1ldGFGaWVsZHMsICd2YWx1ZXMnKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlc0ZpZWxkPy5vbmVvZktpbmQgPT09ICd0ZXh0TWFwJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSB2YWx1ZXNGaWVsZC50ZXh0TWFwPy5lbnRyaWVzID8/IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9FbnRyeSA9IGVudHJpZXMuZmluZCgoZSkgPT4gZS5rZXkgPT09ICdzcGxpY2UubGZkZWNlbnRyYWxpemVkdHJ1c3Qub3JnL3JlYXNvbicpO1xuICAgICAgICAgICAgICAgIGlmIChtZW1vRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9WYWx1ZSA9IG1lbW9FbnRyeT8udmFsdWU/LnN1bTtcbiAgICAgICAgICAgICAgICAgIGlmIChtZW1vVmFsdWU/Lm9uZW9mS2luZCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbW9JZCA9IG1lbW9WYWx1ZS50ZXh0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHJhbnNmZXJBY2NlcHRSZWplY3ROb2RlLmxlbmd0aCkge1xuICAgICAgY29uc3QgZHNvRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZSwgJ2RzbycpO1xuICAgICAgaWYgKGRzb0RhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gZHNvRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZSwgJ293bmVyJyk7XG4gICAgICBpZiAob3duZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gb3duZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgY29uc3QgYW1vdW50RmllbGQgPSBnZXRGaWVsZCh0cmFuc2ZlckFjY2VwdFJlamVjdE5vZGUsICdhbW91bnQnKTtcbiAgICAgIGlmIChhbW91bnRGaWVsZCAmJiBhbW91bnRGaWVsZC5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgIGNvbnN0IGFtb3VudFJlY29yZCA9IGFtb3VudEZpZWxkLnJlY29yZD8uZmllbGRzO1xuICAgICAgICBpZiAoYW1vdW50UmVjb3JkPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBpbml0aWFsQW1vdW50RGF0YSA9IGdldEZpZWxkKGFtb3VudFJlY29yZCwgJ2luaXRpYWxBbW91bnQnKTtcbiAgICAgICAgICBpZiAoaW5pdGlhbEFtb3VudERhdGE/Lm9uZW9mS2luZCA9PT0gJ251bWVyaWMnKSBhbW91bnQgPSBpbml0aWFsQW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghc2VuZGVyIHx8ICFyZWNlaXZlciB8fCAhYW1vdW50KSB7XG4gICAgICBjb25zdCBtaXNzaW5nRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKCFzZW5kZXIpIG1pc3NpbmdGaWVsZHMucHVzaCgnc2VuZGVyJyk7XG4gICAgICBpZiAoIXJlY2VpdmVyKSBtaXNzaW5nRmllbGRzLnB1c2goJ3JlY2VpdmVyJyk7XG4gICAgICBpZiAoIWFtb3VudCkgbWlzc2luZ0ZpZWxkcy5wdXNoKCdhbW91bnQnKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbiBkYXRhOiBtaXNzaW5nICR7bWlzc2luZ0ZpZWxkcy5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSB0aGlzLmNvbnZlcnRBbW91bnRUb0xvd2VzdFVuaXQobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICBjb25zdCBwYXJzZWREYXRhOiBQcmVwYXJlZFR4blBhcnNlZEluZm8gPSB7XG4gICAgICBzZW5kZXIsXG4gICAgICByZWNlaXZlcixcbiAgICAgIGFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgIH07XG4gICAgaWYgKG1lbW9JZCkge1xuICAgICAgcGFyc2VkRGF0YS5tZW1vSWQgPSBtZW1vSWQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSB0b3BvbG9neSBoYXNoIGZyb20gdGhlIEFQSSByZXNwb25zZSBvZiB0aGUgJ2NyZWF0ZSBwYXJ0eScgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSB0b3BvbG9neVRyYW5zYWN0aW9ucyAtIExpc3Qgb2YgYmFzZTY0LWVuY29kZWQgdG9wb2xvZ3kgdHJhbnNhY3Rpb25zIGZyb20gdGhlIENhbnRvbiBBUEkuXG4gICAqIEByZXR1cm5zIFRoZSBmaW5hbCBiYXNlNjQtZW5jb2RlZCB0b3BvbG9neSB0cmFuc2FjdGlvbiBoYXNoLlxuICAgKi9cbiAgY29tcHV0ZUhhc2hGcm9tQ3JlYXRlUGFydHlSZXNwb25zZSh0b3BvbG9neVRyYW5zYWN0aW9uczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4QnVmZmVycyA9IHRvcG9sb2d5VHJhbnNhY3Rpb25zLm1hcCgodHgpID0+IEJ1ZmZlci5mcm9tKHR4LCAnYmFzZTY0JykpO1xuICAgIHJldHVybiB0aGlzLmNvbXB1dGVIYXNoRnJvbVRvcG9sb2d5VHJhbnNhY3Rpb24odHhCdWZmZXJzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXB1dGVIYXNoRnJvbVByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UocHJlcGFyZWRUcmFuc2FjdGlvbkJhc2U2NDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcmVwYXJlZFRyYW5zYWN0aW9uID0gdGhpcy5kZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKHByZXBhcmVkVHJhbnNhY3Rpb25CYXNlNjQpO1xuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCBjb21wdXRlUHJlcGFyZWRUcmFuc2FjdGlvbihwcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaGFzaCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBmaW5hbCB0b3BvbG9neSB0cmFuc2FjdGlvbiBoYXNoIGZvciBhIGxpc3Qgb2YgcHJlcGFyZWQgQ2FudG9uIHRyYW5zYWN0aW9ucy5cbiAgICpcbiAgICogRWFjaCB0cmFuc2FjdGlvbiBpcyBmaXJzdCBoYXNoZWQgd2l0aCBwdXJwb3NlIGAxMWAsIHRoZW4gYWxsIGhhc2hlcyBhcmUgY29tYmluZWQgYW5kXG4gICAqIGhhc2hlZCBhZ2FpbiB3aXRoIHB1cnBvc2UgYDU1YCwgZm9sbG93aW5nIHRoZSBDYW50b24gdG9wb2xvZ3kgaGFzaCBydWxlcy5cbiAgICpcbiAgICogVGhlIHJlc3VsdGluZyBoYXNoIGlzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlcltdfSBwcmVwYXJlZFRyYW5zYWN0aW9ucyAtIEFuIGFycmF5IG9mIENhbnRvbiB0cmFuc2FjdGlvbiBidWZmZXJzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZmluYWwgdG9wb2xvZ3kgaGFzaCwgYmFzZTY0LWVuY29kZWQuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVIYXNoRnJvbVRvcG9sb2d5VHJhbnNhY3Rpb24ocHJlcGFyZWRUcmFuc2FjdGlvbnM6IEJ1ZmZlcltdKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXdIYXNoZXMgPSBwcmVwYXJlZFRyYW5zYWN0aW9ucy5tYXAoKHR4KSA9PiB0aGlzLmNvbXB1dGVTaGEyNTZDYW50b25IYXNoKDExLCB0eCkpO1xuICAgIGNvbnN0IGNvbWJpbmVkSGFzaGVzID0gdGhpcy5jb21wdXRlTXVsdGlIYXNoRm9yVG9wb2xvZ3kocmF3SGFzaGVzKTtcbiAgICBjb25zdCBjb21wdXRlZEhhc2ggPSB0aGlzLmNvbXB1dGVTaGEyNTZDYW50b25IYXNoKDU1LCBjb21iaW5lZEhhc2hlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNvbXB1dGVkSGFzaCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGJhc2U2NC1lbmNvZGVkIEVkMjU1MTkgcHVibGljIGtleSBzdHJpbmcgaW50byBhIHN0cnVjdHVyZWQgc2lnbmluZyBwdWJsaWMga2V5IG9iamVjdC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YmxpY0tleSBUaGUgYmFzZTY0LWVuY29kZWQgRWQyNTUxOSBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBzdHJ1Y3R1cmVkIHNpZ25pbmcga2V5IG9iamVjdCBmb3JtYXR0ZWQgZm9yIHVzZSB3aXRoIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzaWduaW5nUHVibGljS2V5RnJvbUVkMjU1MTkocHVibGljS2V5OiBzdHJpbmcpOiB7XG4gICAgZm9ybWF0OiBudW1iZXI7XG4gICAgcHVibGljS2V5OiBCdWZmZXI7XG4gICAgc2NoZW1lOiBudW1iZXI7XG4gICAga2V5U3BlYzogbnVtYmVyO1xuICAgIHVzYWdlOiBbXTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1hdDogQ3J5cHRvS2V5Rm9ybWF0LlJBVyxcbiAgICAgIHB1YmxpY0tleTogQnVmZmVyLmZyb20ocHVibGljS2V5LCAnYmFzZTY0JyksXG4gICAgICBzY2hlbWU6IFNpZ25pbmdBbGdvcml0aG1TcGVjLkVEMjU1MTksXG4gICAgICBrZXlTcGVjOiBTaWduaW5nS2V5U3BlYy5FQ19DVVJWRTI1NTE5LFxuICAgICAgdXNhZ2U6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGJ1ZmZlciB3aXRoIGEgNC1ieXRlIGJpZy1lbmRpYW4gaW50ZWdlciBwcmVmaXggZm9sbG93ZWQgYnkgdGhlIHByb3ZpZGVkIGJ5dGUgYnVmZmVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSBUaGUgaW50ZWdlciB0byBwcmVmaXgsIHdyaXR0ZW4gYXMgNCBieXRlcyBpbiBiaWctZW5kaWFuIG9yZGVyXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBieXRlcyBUaGUgYnVmZmVyIHRvIGFwcGVuZCBhZnRlciB0aGUgaW50ZWdlciBwcmVmaXhcbiAgICogQHJldHVybnMge0J1ZmZlcn0gVGhlIHJlc3VsdGluZyBidWZmZXIgd2l0aCB0aGUgcHJlZml4ZWQgaW50ZWdlclxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhlZEludCh2YWx1ZTogbnVtYmVyLCBieXRlczogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCArIGJ5dGVzLmxlbmd0aCk7XG4gICAgYnVmZmVyLndyaXRlVUludDMyQkUodmFsdWUsIDApO1xuICAgIEJ1ZmZlci5mcm9tKGJ5dGVzKS5jb3B5KGJ1ZmZlciwgNCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhbiBTSEEtMjU2IENhbnRvbi1zdHlsZSBoYXNoIGJ5IHByZWZpeGluZyB0aGUgaW5wdXQgd2l0aCBhIHB1cnBvc2UgaWRlbnRpZmllcixcbiAgICogdGhlbiBoYXNoaW5nIHRoZSByZXN1bHRpbmcgYnVmZmVyIGFuZCBwcmVwZW5kaW5nIGEgbXVsdGktcHJlZml4XG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBwdXJwb3NlIEEgbnVtZXJpYyBpZGVudGlmaWVyIHRvIHByZWZpeCB0aGUgaGFzaCBpbnB1dCB3aXRoXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBieXRlcyBUaGUgYnVmZmVyIHRvIGJlIGhhc2hlZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBBIGhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0aW5nIGhhc2ggd2l0aCBtdWx0aS1wcmVmaXhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2gocHVycG9zZTogbnVtYmVyLCBieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoSW5wdXQgPSB0aGlzLnByZWZpeGVkSW50KHB1cnBvc2UsIGJ5dGVzKTtcbiAgICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoYXNoSW5wdXQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IG11bHRpcHJlZml4ID0gQnVmZmVyLmZyb20oWzB4MTIsIDB4MjBdKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbbXVsdGlwcmVmaXgsIGhhc2hdKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIEJhc2U2NC1lbmNvZGVkIHN0cmluZyBpbnRvIGEgVWludDhBcnJheVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYjY0IFRoZSBCYXNlNjQtZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFRoZSBkZWNvZGVkIGJ5dGUgYXJyYXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZnJvbUJhc2U2NChiNjQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShiNjQsICdiYXNlNjQnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIEJhc2U2NC1lbmNvZGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIGludG8gYSBzdHJ1Y3R1cmVkIG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZTY0IFRoZSBCYXNlNjQtZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHtJUHJlcGFyZWRUcmFuc2FjdGlvbn0gVGhlIGRlY29kZWQgYElQcmVwYXJlZFRyYW5zYWN0aW9uYCBvYmplY3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihiYXNlNjQ6IHN0cmluZyk6IElQcmVwYXJlZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBieXRlcyA9IHRoaXMuZnJvbUJhc2U2NChiYXNlNjQpO1xuICAgIHJldHVybiBQcmVwYXJlZFRyYW5zYWN0aW9uLmZyb21CaW5hcnkoYnl0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGEgZGV0ZXJtaW5pc3RpYyBjb21iaW5lZCBoYXNoIGZyb20gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBDYW50b24tc3R5bGUgU0hBLTI1NiBoYXNoZXNcbiAgICpcbiAgICogRWFjaCBoYXNoIGlzIGRlY29kZWQgZnJvbSBoZXgsIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSAoYnkgaGV4KSwgYW5kIHByZWZpeGVkIHdpdGggaXRzIGxlbmd0aFxuICAgKiBUaGUgZmluYWwgYnVmZmVyIGluY2x1ZGVzIHRoZSBudW1iZXIgb2YgaGFzaGVzIGZvbGxvd2VkIGJ5IGVhY2ggKGxlbmd0aC1wcmVmaXhlZCkgaGFzaFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBoYXNoZXMgLSBBbiBhcnJheSBvZiBDYW50b24tcHJlZml4ZWQgU0hBLTI1NiBoYXNoZXMgaW4gaGV4YWRlY2ltYWwgc3RyaW5nIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBBIGJpbmFyeSBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBjb21iaW5lZCBoYXNoIGlucHV0XG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVNdWx0aUhhc2hGb3JUb3BvbG9neShoYXNoZXM6IHN0cmluZ1tdKTogQnVmZmVyIHtcbiAgICBjb25zdCBzb3J0ZWRIYXNoZXMgPSBoYXNoZXNcbiAgICAgIC5tYXAoKGhleCkgPT4gQnVmZmVyLmZyb20oaGV4LCAnaGV4JykpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b1N0cmluZygnaGV4JykubG9jYWxlQ29tcGFyZShiLnRvU3RyaW5nKCdoZXgnKSkpO1xuXG4gICAgY29uc3QgbnVtSGFzaGVzQnl0ZXMgPSB0aGlzLmVuY29kZUludDMyKHNvcnRlZEhhc2hlcy5sZW5ndGgpO1xuICAgIGNvbnN0IHBhcnRzOiBCdWZmZXJbXSA9IFtudW1IYXNoZXNCeXRlc107XG5cbiAgICBmb3IgKGNvbnN0IGggb2Ygc29ydGVkSGFzaGVzKSB7XG4gICAgICBjb25zdCBsZW5ndGhCeXRlcyA9IHRoaXMuZW5jb2RlSW50MzIoaC5sZW5ndGgpO1xuICAgICAgcGFydHMucHVzaChsZW5ndGhCeXRlcywgaCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQocGFydHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgaW50byBhIDQtYnl0ZSBiaWctZW5kaWFuIEJ1ZmZlclxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBUaGUgaW50ZWdlciB0byBlbmNvZGVcbiAgICogQHJldHVybnMge0J1ZmZlcn0gQSA0LWJ5dGUgYnVmZmVyIHJlcHJlc2VudGluZyB0aGUgaW50ZWdlciBpbiBiaWctZW5kaWFuIGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBlbmNvZGVJbnQzMih2YWx1ZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgYnVmLndyaXRlSW50MzJCRSh2YWx1ZSwgMCk7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRvIGNhbnRvbiByYXcgdW5pdHNcbiAgICogQHBhcmFtIHtCaWdOdW1iZXJ9IHZhbHVlXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBjb252ZXJ0ZWQgcmF3IGNhbnRvbiB1bml0c1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0QW1vdW50VG9Mb3dlc3RVbml0KHZhbHVlOiBCaWdOdW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5tdWx0aXBsaWVkQnkobmV3IEJpZ051bWJlcigxMCkucG93KDEwKSkudG9GaXhlZCgwKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxvREFBNEI7QUFFNUIsbURBQTJGO0FBRTNGLDBEQUEwRTtBQUMxRSx5RkFBbUY7QUFFbkYseUNBQW1GO0FBSW5GLE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLGlFQUFpRTtRQUNqRSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsMkVBQTJFO1FBQzNFLG9EQUFvRDtRQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENB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QUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBeldELHNCQXlXQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBCYXNlVXRpbHMsIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IGNvbXB1dGVQcmVwYXJlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2hhc2gvaGFzaC5qcyc7XG5pbXBvcnQgeyBQcmVwYXJlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvL3ByZXBhcmVkVHJhbnNhY3Rpb24uanMnO1xuXG5pbXBvcnQgeyBDcnlwdG9LZXlGb3JtYXQsIFNpZ25pbmdBbGdvcml0aG1TcGVjLCBTaWduaW5nS2V5U3BlYyB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgUHJlcGFyZWRUcmFuc2FjdGlvbiBhcyBJUHJlcGFyZWRUcmFuc2FjdGlvbiwgUHJlcGFyZWRUeG5QYXJzZWRJbmZvIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBSZWNvcmRGaWVsZCB9IGZyb20gJy4vcmVzb3VyY2VzSW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYWRkcmVzcyB8fCBhZGRyZXNzLnRyaW0oKSA9PT0gJycpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBbcGFydHlIaW50LCBmaW5nZXJwcmludF0gPSBhZGRyZXNzLnRyaW0oKS5zcGxpdCgnOjonKTtcbiAgICBpZiAoIWZpbmdlcnByaW50KSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWxsIG1lbW9JZHMgYXJlIGNvbnNpZGVyZWQgdmFsaWQgYXMgbG9uZyBhcyBzdHJpbmdzIGFyZSBwYXNzZWRcbiAgICBjb25zdCBbZmluZ2VycHJpbnRQYXJ0XSA9IGZpbmdlcnByaW50LnRyaW0oKS5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICBpZiAoIXBhcnR5SGludCB8fCAhZmluZ2VycHJpbnRQYXJ0KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZENhbnRvbkhleChmaW5nZXJwcmludFBhcnQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIEluIGNhbnRvbiwgdGhlcmUgaXMgbm8gYmxvY2sgaGFzaCwgd2Ugc3RvcmUgdGhlIGhlaWdodCBhcyB0aGUgX2lkIChoYXNoKVxuICAgIC8vIHRoaXMgd2lsbCBiZSBvZiB0aGUgZm9ybSwgPGJsb2NrSGVpZ2h0Pl88dmVyc2lvbj5cbiAgICBjb25zdCBbaGVpZ2h0XSA9IGhhc2guc3BsaXQoJ18nKTtcbiAgICBjb25zdCBibG9ja0hlaWdodCA9IE51bWJlcihoZWlnaHQpO1xuICAgIHJldHVybiAhaXNOYU4oYmxvY2tIZWlnaHQpICYmIGJsb2NrSGVpZ2h0ID4gMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHZhbGlkYXRlIHRoZSBpbnB1dCBpcyBhIHZhbGlkIGNhbnRvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSB0aGUgaGV4IHN0cmluZyB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZENhbnRvbkhleCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSAvXlthLWZBLUYwLTldezY4fSQvO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNvbnZlcnQgaGV4IHZhbHVlIHRvIGJhc2U2NFxuICAgKiBAcGFyYW0ge1N0cmluZ30gaGV4U3RyaW5nIC0gaGV4IGVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgKi9cbiAgZ2V0QmFzZTY0RnJvbUhleChoZXhTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhleFN0cmluZywgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gY3JlYXRlIGZpbmdlcnByaW50IChwYXJ0IG9mIHRoZSBjYW50b24gcGFydHlJZCkgZnJvbSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwdWJsaWNLZXkgdGhlIHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMge1N0cmluZ31cbiAgICovXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnNpZ25pbmdQdWJsaWNLZXlGcm9tRWQyNTUxOShwdWJsaWNLZXkpO1xuICAgIGNvbnN0IGhhc2hQdXJwb3NlID0gMTI7XG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2goaGFzaFB1cnBvc2UsIGtleS5wdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwYXJzZSByYXcgY2FudG9uIHRyYW5zYWN0aW9uICYgZ2V0IHJlcXVpcmVkIGRhdGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IHJhd0RhdGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eFR5cGUgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHJldHVybnMge1ByZXBhcmVkVHhuUGFyc2VkSW5mb31cbiAgICovXG4gIHBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKHJhd0RhdGE6IHN0cmluZywgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGUpOiBQcmVwYXJlZFR4blBhcnNlZEluZm8ge1xuICAgIGNvbnN0IGRlY29kZWREYXRhID0gdGhpcy5kZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKHJhd0RhdGEpO1xuICAgIGxldCBzZW5kZXIgPSAnJztcbiAgICBsZXQgcmVjZWl2ZXIgPSAnJztcbiAgICBsZXQgYW1vdW50ID0gJyc7XG4gICAgbGV0IG1lbW9JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBwcmVBcHByb3ZhbE5vZGU6IFJlY29yZEZpZWxkW10gPSBbXTtcbiAgICBsZXQgdHJhbnNmZXJOb2RlOiBSZWNvcmRGaWVsZFtdID0gW107XG4gICAgbGV0IHRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZTogUmVjb3JkRmllbGRbXSA9IFtdO1xuICAgIGNvbnN0IG5vZGVzID0gZGVjb2RlZERhdGEudHJhbnNhY3Rpb24/Lm5vZGVzO1xuXG4gICAgbm9kZXM/LmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb25lZE5vZGUgPSBub2RlLnZlcnNpb25lZE5vZGU7XG4gICAgICBpZiAoIXZlcnNpb25lZE5vZGUgfHwgdmVyc2lvbmVkTm9kZS5vbmVvZktpbmQgIT09ICd2MScpIHJldHVybjtcbiAgICAgIGNvbnN0IHYxTm9kZSA9IHZlcnNpb25lZE5vZGUudjE7XG4gICAgICBjb25zdCBub2RlVHlwZSA9IHYxTm9kZS5ub2RlVHlwZTtcbiAgICAgIGlmIChub2RlVHlwZS5vbmVvZktpbmQgIT09ICdjcmVhdGUnKSByZXR1cm47XG4gICAgICBjb25zdCBjcmVhdGVOb2RlID0gbm9kZVR5cGUuY3JlYXRlO1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSBjcmVhdGVOb2RlLnRlbXBsYXRlSWQ7XG4gICAgICBjb25zdCBhcmdTdW0gPSBjcmVhdGVOb2RlLmFyZ3VtZW50Py5zdW07XG4gICAgICBpZiAoIWFyZ1N1bSB8fCBhcmdTdW0ub25lb2ZLaW5kICE9PSAncmVjb3JkJykgcmV0dXJuO1xuICAgICAgY29uc3QgZmllbGRzID0gYXJnU3VtLnJlY29yZD8uZmllbGRzO1xuICAgICAgaWYgKCFmaWVsZHMpIHJldHVybjtcbiAgICAgIGlmIChcbiAgICAgICAgdGVtcGxhdGU/LmVudGl0eU5hbWUgPT09ICdUcmFuc2ZlclByZWFwcHJvdmFsUHJvcG9zYWwnICYmXG4gICAgICAgICFwcmVBcHByb3ZhbE5vZGUubGVuZ3RoICYmXG4gICAgICAgIHR4VHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLk9uZVN0ZXBQcmVBcHByb3ZhbFxuICAgICAgKSB7XG4gICAgICAgIHByZUFwcHJvdmFsTm9kZSA9IGZpZWxkcztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGVtcGxhdGU/LmVudGl0eU5hbWUgPT09ICdBbXVsZXQnICYmXG4gICAgICAgICF0cmFuc2ZlckFjY2VwdFJlamVjdE5vZGUubGVuZ3RoICYmXG4gICAgICAgICh0eFR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdCB8fCB0eFR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdClcbiAgICAgICkge1xuICAgICAgICB0cmFuc2ZlckFjY2VwdFJlamVjdE5vZGUgPSBmaWVsZHM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBub2Rlcz8uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbmVkTm9kZSA9IG5vZGUudmVyc2lvbmVkTm9kZTtcbiAgICAgIGlmICghdmVyc2lvbmVkTm9kZSB8fCB2ZXJzaW9uZWROb2RlLm9uZW9mS2luZCAhPT0gJ3YxJykgcmV0dXJuO1xuICAgICAgY29uc3QgdjFOb2RlID0gdmVyc2lvbmVkTm9kZS52MTtcbiAgICAgIGNvbnN0IG5vZGVUeXBlID0gdjFOb2RlLm5vZGVUeXBlO1xuICAgICAgaWYgKG5vZGVUeXBlLm9uZW9mS2luZCAhPT0gJ2V4ZXJjaXNlJykgcmV0dXJuO1xuICAgICAgY29uc3QgZXhlcmNpc2VOb2RlID0gbm9kZVR5cGUuZXhlcmNpc2U7XG4gICAgICBjb25zdCBjaG9pY2VJZCA9IGV4ZXJjaXNlTm9kZS5jaG9pY2VJZDtcbiAgICAgIGlmICghY2hvaWNlSWQgfHwgY2hvaWNlSWQgIT09ICdUcmFuc2ZlckZhY3RvcnlfVHJhbnNmZXInKSByZXR1cm47XG4gICAgICBjb25zdCBhcmdTdW0gPSBleGVyY2lzZU5vZGUuY2hvc2VuVmFsdWU/LnN1bTtcbiAgICAgIGlmICghYXJnU3VtIHx8IGFyZ1N1bS5vbmVvZktpbmQgIT09ICdyZWNvcmQnKSByZXR1cm47XG4gICAgICBjb25zdCBmaWVsZHMgPSBhcmdTdW0ucmVjb3JkPy5maWVsZHM7XG4gICAgICBpZiAoIWZpZWxkcykgcmV0dXJuO1xuICAgICAgdHJhbnNmZXJOb2RlID0gZmllbGRzO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZ2V0RmllbGQgPSAoZmllbGRzOiBSZWNvcmRGaWVsZFtdLCBsYWJlbDogc3RyaW5nKSA9PiBmaWVsZHMuZmluZCgoZikgPT4gZi5sYWJlbCA9PT0gbGFiZWwpPy52YWx1ZT8uc3VtO1xuXG4gICAgaWYgKHByZUFwcHJvdmFsTm9kZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKHByZUFwcHJvdmFsTm9kZSwgJ3JlY2VpdmVyJyk7XG4gICAgICBpZiAocmVjZWl2ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gcmVjZWl2ZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgY29uc3QgcHJvdmlkZXJEYXRhID0gZ2V0RmllbGQocHJlQXBwcm92YWxOb2RlLCAncHJvdmlkZXInKTtcbiAgICAgIGlmIChwcm92aWRlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gcHJvdmlkZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgYW1vdW50ID0gJzAnO1xuICAgIH0gZWxzZSBpZiAodHJhbnNmZXJOb2RlLmxlbmd0aCkge1xuICAgICAgY29uc3QgdHJhbnNmZXJGaWVsZCA9IHRyYW5zZmVyTm9kZS5maW5kKChmKSA9PiBmLmxhYmVsID09PSAndHJhbnNmZXInKTtcbiAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gdHJhbnNmZXJGaWVsZD8udmFsdWU/LnN1bTtcbiAgICAgIGlmICh0cmFuc2ZlclN1bSAmJiB0cmFuc2ZlclN1bS5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyUmVjb3JkID0gdHJhbnNmZXJTdW0ucmVjb3JkPy5maWVsZHM7XG4gICAgICAgIGlmICh0cmFuc2ZlclJlY29yZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgc2VuZGVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAnc2VuZGVyJyk7XG4gICAgICAgICAgaWYgKHNlbmRlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gc2VuZGVyRGF0YS5wYXJ0eSA/PyAnJztcblxuICAgICAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAncmVjZWl2ZXInKTtcbiAgICAgICAgICBpZiAocmVjZWl2ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gcmVjZWl2ZXJEYXRhLnBhcnR5ID8/ICcnO1xuXG4gICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAnYW1vdW50Jyk7XG4gICAgICAgICAgaWYgKGFtb3VudERhdGE/Lm9uZW9mS2luZCA9PT0gJ251bWVyaWMnKSBhbW91bnQgPSBhbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG5cbiAgICAgICAgICBjb25zdCBtZXRhRmllbGQgPSBnZXRGaWVsZCh0cmFuc2ZlclJlY29yZCwgJ21ldGEnKTtcbiAgICAgICAgICBpZiAobWV0YUZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhRmllbGRzID0gbWV0YUZpZWxkLnJlY29yZD8uZmllbGRzO1xuICAgICAgICAgICAgaWYgKG1ldGFGaWVsZHMgJiYgbWV0YUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVzRmllbGQgPSBnZXRGaWVsZChtZXRhRmllbGRzLCAndmFsdWVzJyk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZXNGaWVsZD8ub25lb2ZLaW5kID09PSAndGV4dE1hcCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gdmFsdWVzRmllbGQudGV4dE1hcD8uZW50cmllcyA/PyBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBtZW1vRW50cnkgPSBlbnRyaWVzLmZpbmQoKGUpID0+IGUua2V5ID09PSAnc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy9yZWFzb24nKTtcbiAgICAgICAgICAgICAgICBpZiAobWVtb0VudHJ5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtZW1vVmFsdWUgPSBtZW1vRW50cnk/LnZhbHVlPy5zdW07XG4gICAgICAgICAgICAgICAgICBpZiAobWVtb1ZhbHVlPy5vbmVvZktpbmQgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICBtZW1vSWQgPSBtZW1vVmFsdWUudGV4dDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRyYW5zZmVyQWNjZXB0UmVqZWN0Tm9kZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGRzb0RhdGEgPSBnZXRGaWVsZCh0cmFuc2ZlckFjY2VwdFJlamVjdE5vZGUsICdkc28nKTtcbiAgICAgIGlmIChkc29EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IGRzb0RhdGEucGFydHkgPz8gJyc7XG4gICAgICBjb25zdCBvd25lckRhdGEgPSBnZXRGaWVsZCh0cmFuc2ZlckFjY2VwdFJlamVjdE5vZGUsICdvd25lcicpO1xuICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgIGNvbnN0IGFtb3VudEZpZWxkID0gZ2V0RmllbGQodHJhbnNmZXJBY2NlcHRSZWplY3ROb2RlLCAnYW1vdW50Jyk7XG4gICAgICBpZiAoYW1vdW50RmllbGQgJiYgYW1vdW50RmllbGQub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICBjb25zdCBhbW91bnRSZWNvcmQgPSBhbW91bnRGaWVsZC5yZWNvcmQ/LmZpZWxkcztcbiAgICAgICAgaWYgKGFtb3VudFJlY29yZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbEFtb3VudERhdGEgPSBnZXRGaWVsZChhbW91bnRSZWNvcmQsICdpbml0aWFsQW1vdW50Jyk7XG4gICAgICAgICAgaWYgKGluaXRpYWxBbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gaW5pdGlhbEFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXNlbmRlciB8fCAhcmVjZWl2ZXIgfHwgIWFtb3VudCkge1xuICAgICAgY29uc3QgbWlzc2luZ0ZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmICghc2VuZGVyKSBtaXNzaW5nRmllbGRzLnB1c2goJ3NlbmRlcicpO1xuICAgICAgaWYgKCFyZWNlaXZlcikgbWlzc2luZ0ZpZWxkcy5wdXNoKCdyZWNlaXZlcicpO1xuICAgICAgaWYgKCFhbW91bnQpIG1pc3NpbmdGaWVsZHMucHVzaCgnYW1vdW50Jyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdHJhbnNhY3Rpb24gZGF0YTogbWlzc2luZyAke21pc3NpbmdGaWVsZHMuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgY29uc3QgY29udmVydGVkQW1vdW50ID0gdGhpcy5jb252ZXJ0QW1vdW50VG9Mb3dlc3RVbml0KG5ldyBCaWdOdW1iZXIoYW1vdW50KSk7XG4gICAgY29uc3QgcGFyc2VkRGF0YTogUHJlcGFyZWRUeG5QYXJzZWRJbmZvID0ge1xuICAgICAgc2VuZGVyLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBhbW91bnQ6IGNvbnZlcnRlZEFtb3VudCxcbiAgICB9O1xuICAgIGlmIChtZW1vSWQpIHtcbiAgICAgIHBhcnNlZERhdGEubWVtb0lkID0gbWVtb0lkO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgdG9wb2xvZ3kgaGFzaCBmcm9tIHRoZSBBUEkgcmVzcG9uc2Ugb2YgdGhlICdjcmVhdGUgcGFydHknIGVuZHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0gdG9wb2xvZ3lUcmFuc2FjdGlvbnMgLSBMaXN0IG9mIGJhc2U2NC1lbmNvZGVkIHRvcG9sb2d5IHRyYW5zYWN0aW9ucyBmcm9tIHRoZSBDYW50b24gQVBJLlxuICAgKiBAcmV0dXJucyBUaGUgZmluYWwgYmFzZTY0LWVuY29kZWQgdG9wb2xvZ3kgdHJhbnNhY3Rpb24gaGFzaC5cbiAgICovXG4gIGNvbXB1dGVIYXNoRnJvbUNyZWF0ZVBhcnR5UmVzcG9uc2UodG9wb2xvZ3lUcmFuc2FjdGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eEJ1ZmZlcnMgPSB0b3BvbG9neVRyYW5zYWN0aW9ucy5tYXAoKHR4KSA9PiBCdWZmZXIuZnJvbSh0eCwgJ2Jhc2U2NCcpKTtcbiAgICByZXR1cm4gdGhpcy5jb21wdXRlSGFzaEZyb21Ub3BvbG9neVRyYW5zYWN0aW9uKHR4QnVmZmVycyk7XG4gIH1cblxuICBhc3luYyBjb21wdXRlSGFzaEZyb21QcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlKHByZXBhcmVkVHJhbnNhY3Rpb25CYXNlNjQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJlcGFyZWRUcmFuc2FjdGlvbiA9IHRoaXMuZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihwcmVwYXJlZFRyYW5zYWN0aW9uQmFzZTY0KTtcbiAgICBjb25zdCBoYXNoID0gYXdhaXQgY29tcHV0ZVByZXBhcmVkVHJhbnNhY3Rpb24ocHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhhc2gpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgZmluYWwgdG9wb2xvZ3kgdHJhbnNhY3Rpb24gaGFzaCBmb3IgYSBsaXN0IG9mIHByZXBhcmVkIENhbnRvbiB0cmFuc2FjdGlvbnMuXG4gICAqXG4gICAqIEVhY2ggdHJhbnNhY3Rpb24gaXMgZmlyc3QgaGFzaGVkIHdpdGggcHVycG9zZSBgMTFgLCB0aGVuIGFsbCBoYXNoZXMgYXJlIGNvbWJpbmVkIGFuZFxuICAgKiBoYXNoZWQgYWdhaW4gd2l0aCBwdXJwb3NlIGA1NWAsIGZvbGxvd2luZyB0aGUgQ2FudG9uIHRvcG9sb2d5IGhhc2ggcnVsZXMuXG4gICAqXG4gICAqIFRoZSByZXN1bHRpbmcgaGFzaCBpcyBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJbXX0gcHJlcGFyZWRUcmFuc2FjdGlvbnMgLSBBbiBhcnJheSBvZiBDYW50b24gdHJhbnNhY3Rpb24gYnVmZmVycy5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGZpbmFsIHRvcG9sb2d5IGhhc2gsIGJhc2U2NC1lbmNvZGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlSGFzaEZyb21Ub3BvbG9neVRyYW5zYWN0aW9uKHByZXBhcmVkVHJhbnNhY3Rpb25zOiBCdWZmZXJbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmF3SGFzaGVzID0gcHJlcGFyZWRUcmFuc2FjdGlvbnMubWFwKCh0eCkgPT4gdGhpcy5jb21wdXRlU2hhMjU2Q2FudG9uSGFzaCgxMSwgdHgpKTtcbiAgICBjb25zdCBjb21iaW5lZEhhc2hlcyA9IHRoaXMuY29tcHV0ZU11bHRpSGFzaEZvclRvcG9sb2d5KHJhd0hhc2hlcyk7XG4gICAgY29uc3QgY29tcHV0ZWRIYXNoID0gdGhpcy5jb21wdXRlU2hhMjU2Q2FudG9uSGFzaCg1NSwgY29tYmluZWRIYXNoZXMpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShjb21wdXRlZEhhc2gsICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiYXNlNjQtZW5jb2RlZCBFZDI1NTE5IHB1YmxpYyBrZXkgc3RyaW5nIGludG8gYSBzdHJ1Y3R1cmVkIHNpZ25pbmcgcHVibGljIGtleSBvYmplY3QuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwdWJsaWNLZXkgVGhlIGJhc2U2NC1lbmNvZGVkIEVkMjU1MTkgcHVibGljIGtleVxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgc3RydWN0dXJlZCBzaWduaW5nIGtleSBvYmplY3QgZm9ybWF0dGVkIGZvciB1c2Ugd2l0aCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2lnbmluZ1B1YmxpY0tleUZyb21FZDI1NTE5KHB1YmxpY0tleTogc3RyaW5nKToge1xuICAgIGZvcm1hdDogbnVtYmVyO1xuICAgIHB1YmxpY0tleTogQnVmZmVyO1xuICAgIHNjaGVtZTogbnVtYmVyO1xuICAgIGtleVNwZWM6IG51bWJlcjtcbiAgICB1c2FnZTogW107XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JtYXQ6IENyeXB0b0tleUZvcm1hdC5SQVcsXG4gICAgICBwdWJsaWNLZXk6IEJ1ZmZlci5mcm9tKHB1YmxpY0tleSwgJ2Jhc2U2NCcpLFxuICAgICAgc2NoZW1lOiBTaWduaW5nQWxnb3JpdGhtU3BlYy5FRDI1NTE5LFxuICAgICAga2V5U3BlYzogU2lnbmluZ0tleVNwZWMuRUNfQ1VSVkUyNTUxOSxcbiAgICAgIHVzYWdlOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBidWZmZXIgd2l0aCBhIDQtYnl0ZSBiaWctZW5kaWFuIGludGVnZXIgcHJlZml4IGZvbGxvd2VkIGJ5IHRoZSBwcm92aWRlZCBieXRlIGJ1ZmZlclxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgVGhlIGludGVnZXIgdG8gcHJlZml4LCB3cml0dGVuIGFzIDQgYnl0ZXMgaW4gYmlnLWVuZGlhbiBvcmRlclxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnl0ZXMgVGhlIGJ1ZmZlciB0byBhcHBlbmQgYWZ0ZXIgdGhlIGludGVnZXIgcHJlZml4XG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IFRoZSByZXN1bHRpbmcgYnVmZmVyIHdpdGggdGhlIHByZWZpeGVkIGludGVnZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcHJlZml4ZWRJbnQodmFsdWU6IG51bWJlciwgYnl0ZXM6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQgKyBieXRlcy5sZW5ndGgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkJFKHZhbHVlLCAwKTtcbiAgICBCdWZmZXIuZnJvbShieXRlcykuY29weShidWZmZXIsIDQpO1xuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYW4gU0hBLTI1NiBDYW50b24tc3R5bGUgaGFzaCBieSBwcmVmaXhpbmcgdGhlIGlucHV0IHdpdGggYSBwdXJwb3NlIGlkZW50aWZpZXIsXG4gICAqIHRoZW4gaGFzaGluZyB0aGUgcmVzdWx0aW5nIGJ1ZmZlciBhbmQgcHJlcGVuZGluZyBhIG11bHRpLXByZWZpeFxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gcHVycG9zZSBBIG51bWVyaWMgaWRlbnRpZmllciB0byBwcmVmaXggdGhlIGhhc2ggaW5wdXQgd2l0aFxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnl0ZXMgVGhlIGJ1ZmZlciB0byBiZSBoYXNoZWRcbiAgICogQHJldHVybnMge1N0cmluZ30gQSBoZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdGluZyBoYXNoIHdpdGggbXVsdGktcHJlZml4XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVTaGEyNTZDYW50b25IYXNoKHB1cnBvc2U6IG51bWJlciwgYnl0ZXM6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzaElucHV0ID0gdGhpcy5wcmVmaXhlZEludChwdXJwb3NlLCBieXRlcyk7XG4gICAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGFzaElucHV0KS5kaWdlc3QoKTtcbiAgICBjb25zdCBtdWx0aXByZWZpeCA9IEJ1ZmZlci5mcm9tKFsweDEyLCAweDIwXSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW211bHRpcHJlZml4LCBoYXNoXSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBCYXNlNjQtZW5jb2RlZCBzdHJpbmcgaW50byBhIFVpbnQ4QXJyYXlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGI2NCBUaGUgQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBUaGUgZGVjb2RlZCBieXRlIGFycmF5XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGZyb21CYXNlNjQoYjY0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oYjY0LCAnYmFzZTY0JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBCYXNlNjQtZW5jb2RlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbiBpbnRvIGEgc3RydWN0dXJlZCBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IGJhc2U2NCBUaGUgQmFzZTY0LWVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7SVByZXBhcmVkVHJhbnNhY3Rpb259IFRoZSBkZWNvZGVkIGBJUHJlcGFyZWRUcmFuc2FjdGlvbmAgb2JqZWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGRlY29kZVByZXBhcmVkVHJhbnNhY3Rpb24oYmFzZTY0OiBzdHJpbmcpOiBJUHJlcGFyZWRUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgYnl0ZXMgPSB0aGlzLmZyb21CYXNlNjQoYmFzZTY0KTtcbiAgICByZXR1cm4gUHJlcGFyZWRUcmFuc2FjdGlvbi5mcm9tQmluYXJ5KGJ5dGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhIGRldGVybWluaXN0aWMgY29tYmluZWQgaGFzaCBmcm9tIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgQ2FudG9uLXN0eWxlIFNIQS0yNTYgaGFzaGVzXG4gICAqXG4gICAqIEVhY2ggaGFzaCBpcyBkZWNvZGVkIGZyb20gaGV4LCBzb3J0ZWQgbGV4aWNvZ3JhcGhpY2FsbHkgKGJ5IGhleCksIGFuZCBwcmVmaXhlZCB3aXRoIGl0cyBsZW5ndGhcbiAgICogVGhlIGZpbmFsIGJ1ZmZlciBpbmNsdWRlcyB0aGUgbnVtYmVyIG9mIGhhc2hlcyBmb2xsb3dlZCBieSBlYWNoIChsZW5ndGgtcHJlZml4ZWQpIGhhc2hcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gaGFzaGVzIC0gQW4gYXJyYXkgb2YgQ2FudG9uLXByZWZpeGVkIFNIQS0yNTYgaGFzaGVzIGluIGhleGFkZWNpbWFsIHN0cmluZyBmb3JtYXRcbiAgICogQHJldHVybnMge0J1ZmZlcn0gQSBiaW5hcnkgYnVmZmVyIHJlcHJlc2VudGluZyB0aGUgY29tYmluZWQgaGFzaCBpbnB1dFxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlTXVsdGlIYXNoRm9yVG9wb2xvZ3koaGFzaGVzOiBzdHJpbmdbXSk6IEJ1ZmZlciB7XG4gICAgY29uc3Qgc29ydGVkSGFzaGVzID0gaGFzaGVzXG4gICAgICAubWFwKChoZXgpID0+IEJ1ZmZlci5mcm9tKGhleCwgJ2hleCcpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9TdHJpbmcoJ2hleCcpLmxvY2FsZUNvbXBhcmUoYi50b1N0cmluZygnaGV4JykpKTtcblxuICAgIGNvbnN0IG51bUhhc2hlc0J5dGVzID0gdGhpcy5lbmNvZGVJbnQzMihzb3J0ZWRIYXNoZXMubGVuZ3RoKTtcbiAgICBjb25zdCBwYXJ0czogQnVmZmVyW10gPSBbbnVtSGFzaGVzQnl0ZXNdO1xuXG4gICAgZm9yIChjb25zdCBoIG9mIHNvcnRlZEhhc2hlcykge1xuICAgICAgY29uc3QgbGVuZ3RoQnl0ZXMgPSB0aGlzLmVuY29kZUludDMyKGgubGVuZ3RoKTtcbiAgICAgIHBhcnRzLnB1c2gobGVuZ3RoQnl0ZXMsIGgpO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGludG8gYSA0LWJ5dGUgYmlnLWVuZGlhbiBCdWZmZXJcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gVGhlIGludGVnZXIgdG8gZW5jb2RlXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IEEgNC1ieXRlIGJ1ZmZlciByZXByZXNlbnRpbmcgdGhlIGludGVnZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgZW5jb2RlSW50MzIodmFsdWU6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1Zi53cml0ZUludDMyQkUodmFsdWUsIDApO1xuICAgIHJldHVybiBidWY7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBjYW50b24gcmF3IHVuaXRzXG4gICAqIEBwYXJhbSB7QmlnTnVtYmVyfSB2YWx1ZVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgY29udmVydGVkIHJhdyBjYW50b24gdW5pdHNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29udmVydEFtb3VudFRvTG93ZXN0VW5pdCh2YWx1ZTogQmlnTnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUubXVsdGlwbGllZEJ5KG5ldyBCaWdOdW1iZXIoMTApLnBvdygxMCkpLnRvRml4ZWQoMCk7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
@@ -61,6 +61,7 @@ export declare const CANTON_ADDRESSES: {
61
61
  };
62
62
  export declare const CANTON_BLOCK_HEIGHT: {
63
63
  VALID_HASH: string;
64
+ VALID_HASH_WITH_VERSION: string;
64
65
  INVALID_BLOCK_HASH: string;
65
66
  NEGATIVE_BLOCK_HASH: string;
66
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,qz+CAC6w+C,CAAC;AAErz+C,eAAO,MAAM,wBAAwB,6s4CACuq4C,CAAC;AAE7s4C,eAAO,MAAM,wBAAwB,qzhDAC+whD,CAAC;AAErzhD,eAAO,MAAM,2BAA2B,66gDACo4gD,CAAC;AAE76gD,eAAO,MAAM,wBAAwB;;;;;CASpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,i2EAC2zE,CAAC;AAEj2E,eAAO,MAAM,cAAc,yxpEAC6vpE,CAAC;AAEzxpE,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qggSACi+/R,CAAC;AAErggS,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;CAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;CAOpD,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAS5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAOtC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qhzDAC2+yD,CAAC;AAErhzD,eAAO,MAAM,gCAAgC;;;;;CAM5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qy5BAC2v5B,CAAC;AAEry5B,eAAO,MAAM,sBAAsB;;;;;CAMlC,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,qz+CAC6w+C,CAAC;AAErz+C,eAAO,MAAM,wBAAwB,6s4CACuq4C,CAAC;AAE7s4C,eAAO,MAAM,wBAAwB,qzhDAC+whD,CAAC;AAErzhD,eAAO,MAAM,2BAA2B,66gDACo4gD,CAAC;AAE76gD,eAAO,MAAM,wBAAwB;;;;;CASpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,i2EAC2zE,CAAC;AAEj2E,eAAO,MAAM,cAAc,yxpEAC6vpE,CAAC;AAEzxpE,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qggSACi+/R,CAAC;AAErggS,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;CAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;CAOpD,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAS5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAOtC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qhzDAC2+yD,CAAC;AAErhzD,eAAO,MAAM,gCAAgC;;;;;CAM5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qy5BAC2v5B,CAAC;AAEry5B,eAAO,MAAM,sBAAsB;;;;;CAMlC,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC"}